2010年8月27日 星期五

遇到 Nulls 時的排序方式

今天看到了一個 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 比較貼心呢! 。

沒有留言:

Share with Facebook