今天看到了一個 Nulls Last 的 Oracle 語法,順便回頭研究 SQL Server 上要如何實作。
問題
當查詢遇到了排序的欄位中有 Null 值時,要如何將 Null 值改排在前還是排在後。
SQL Server 版
SQL Server 總認為 null 值是比較小的值。當order by 的欄位中有 null 時,null 的資料會先列出。相反地, order by …. desc 時會最後列出。
如果要改變,只好搞一下小技巧
--排列時,field1為null 的最後才列出
select * from tableName
order by case when field1 is null then 1 else 0 end, field1 asc
Oracle 版
Oracle 則認為 null 值是比較大的值。
對於 null 值要如何排序,Oracle 的獨特的語法來解決。
select * from tableName order by field1 NULLS First; --Null 值先列出。此為預設
select * from tableName order by field1 NULLS Last; -- Null 值後列出。
結論
這個問題,SQL Server 還是可以做到,只是要想一下小技巧。 看來這個地方 Oracle 比較貼心呢! 。
沒有留言:
張貼留言