1、ORDER BY 中關(guān)于NULL的處理
缺省處理,Oracle在Order by 時覺得null是最大值,所以假設(shè)是ASC升序則排在最后,DESC降序則排在最前。
當(dāng)然,你也能夠使用nulls first 或者nulls last 語法來控制NULL的位置。
Nulls first和nulls last是Oracle Order by支持的語法
假設(shè)Order by 中指定了表達式Nulls first則表示null值的記錄將排在最前(無論是asc 還是 desc)
假設(shè)Order by 中指定了表達式Nulls last則表示null值的記錄將排在最后 (無論是asc 還是 desc)
使用語法例如以下:
--將nulls始終放在最前
select * from zl_cbqc order by cb_ld nulls first
--將nulls始終放在最后
select * from zl_cbqc order by cb_ld desc nulls last
2、幾種排序的寫法
單列升序:select<column_name> from <table_name> order by <column_name>; (默認(rèn)升序,即使不寫ASC)
單列降序:select <column_name> from <table_name> order by <column_name> desc;
多列升序:select <column_one>, <column_two> from <table_name> order by <column_one>, <column_two>;
多列降序:select <column_one>, <column_two> from <table_name> order by <column_one> desc, <column_two> desc;
多列混合排序:select <column_one>, <column_two> from <table_name> order by <column_one> desc, <column_two> asc;
3、今天看到的新寫法
SQL> select * from tb;
??? BLOGID BLOGCLASS
---------- ------------------------------
??????? 1 人生
??????? 2 學(xué)習(xí)
??????? 3 工作
??????? 5 朋友
SQL> select * from tb order by decode(blogid,3,1,2), blogid;
??? BLOGID BLOGCLASS
---------- ------------------------------
??????? 3 工作
??????? 1 人生
??????? 2 學(xué)習(xí)
??????? 5 朋友
我所說的就是上面紅色的那句話。實現(xiàn)的功能就是無論如何,BLOGID為3的值必須排在第一位,其它的記錄依照BLOGID升序排序。
shiyiwan同學(xué)給我的解釋是這種:“默認(rèn)升序排序,blogid = 3時返回1,其它則返回2, 所以blogid = 3的記錄排在最前啊。”
wildwave同學(xué)也給了個說法:“你將那個decode理解成前面select后面的列,依照那一列排序就好了。”
我又去試了一條語句,結(jié)果例如以下
SQL>? select * from tb order by decode(blogid,3,1,2);
??? BLOGID BLOGCLASS
---------- ------------------------------
???????? 3 工作
???????? 5 朋友
???????? 1 人生
???????? 2 學(xué)習(xí)
我如今的理解是這種,通過decode()函數(shù),BLOGID值為3的那條記錄被轉(zhuǎn)換為了1,而其它的記錄都是2,那么依照這個順序排序,肯定BLOGID為3的那條記錄永遠在最前面了,不僅如此,注意到后面還加了個按BLOGID默認(rèn)升序排列,這也就是說對于那些被DECODE轉(zhuǎn)換為2的記錄來說,依照它們的BLOGID升序排序
本文來自CSDN博客,轉(zhuǎn)載請標(biāo)明出處:
http://blog.csdn.net/wh62592855/archive/2009/11/15/4813404.aspx
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯(lián)系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
