遇到一種情況,對數字進行排序的時候,出現null在數字後面的情況,現在的需求是null排在前面然後才是公升序的排數字
【oracle 結論】
order by colum asc 時,null預設被放在最後
order by colum desc 時,null預設被放在最前
nulls first 時,強制null放在最前,不為null的按宣告順序[asc|desc]進行排序
nulls last 時,強制null放在最後,不為null的按宣告順序[asc|desc]進行排序
【mysql 結論】
order by colum asc 時,null預設被放在最前
order by colum desc 時,null預設被放在最後
order by if(isnull(update_date),0,1) null被強制放在最前,不為null的按宣告順序[asc|desc]進行排序
order by if(isnull(update_date),1,0) null被強制放在最後,不為null的按宣告順序[asc|desc]進行排序
針對【oracle】我們就需要使用以下語法:
order by order_col [asc|desc] nulls [first|last]
而針對【mysql】我們則需要使用以下語法:
order by if(isnull(my_field),1,0),my_field;
下面在oracle11g下做個測試:
測試資料:
rownum
create_date
update_date
120-3月 -11
18-6月 -11
220-4月 -11
320-5月 -11
20-6月 -11
【無排序/預設排序】
[sql]view plain
copy
select update_date from table_name ;
leeyee 寫道
[結果]
1 18-6月 -11
2 3 20-6月 -11
【asc排序】
[sql]view plain
copy
select update_date from table_name order by update_date;
leeyee 寫道
[結果]
1 20-6月 -11
2 18-6月 -11
3【desc排序】
[sql]view plain
copy
select update_date from table_name order by update_date desc;
leeyee 寫道
[結果]
1 2 18-6月 -11
3 20-6月 -11
【asc排序,強制null放在最前】
select update_date from table_name order by update_date nulls first;
leeyee 寫道
[結果]
1 2 20-6月 -11
3 18-6月 -11
【asc排序,強制null放在最後】
select update_date from table_name order by update_date nulls last;
leeyee 寫道
[結果]
1 20-6月 -11
2 18-6月 -11
3mysql5.0測試
select update_date from table_name order by if(isnull(update_date),0,1),update_date;
,同orcel一樣,pgsql也同樣適用。
該文**
空值NULL處理
1.空值 null 處理 查詢籍貫為null同學 如果判斷乙個欄位的的值是不是null,需要使用is關鍵字,不能使用 select from tbstudent where stuaddress isnull 查詢籍貫不是null的所有同學 select from tbstudent where s...
處理Null(空)值
如果將null設定給物件的屬性,程式會報錯。例如 如果myblog.settitle null 程式會報錯。如果引數傳了乙個空值,那麼jdbc type對於所有的jdbc允許為空的列來說是必須指定的。解決方法 在引數中指定jdbctype屬性,這個屬性只在insert,update,delete的時...
hive 空值 null判斷
hive中空值判斷基本分兩種 1 null 與 n hive在底層資料中 如何儲存和標識null,是由 alter table name set serdeproperties serialization.null.format n 引數控制的 比如 1.設定 alter table name se...