2012年1月30日 星期一

在SQL中如何將null值放在最後一筆?

在SQL的預設排序設定裡,

NULL值是會比0~9還要來的小的,

所以要將null值排序到最後一筆的話就得另外自行處理。

原本的作法是:



SELECT *
,(case when B.SubNum IS NULL THEN B.SubId WHEN B.SubNum='' THEN B.SubId ELSE CONVERT(int,B.SubNum)END ) AS OrderNum


FROM ABC B
ORDER BY OrderNum


後來看了下面的網站之後才知道ORDER BY可以直接使用CASE WHEN!

http://sqlblog.com/blogs/denis_gobo/archive/2007/10/19/3048.aspx

改成下面這樣:

SELECT *
FROM ABC B
ORDER BY (case when B.SubNum IS NULL THEN B.SubId WHEN B.SubNum='' THEN B.SubId ELSE CONVERT(int,B.SubNum)END )

兩種作法都可以,
只是個人覺得下面這種看起來比較明確,
排序用的欄位就只是排序用

只不過在改得時候直接寫在ORDER BY的話會不確定自己到底改了什麼就是了XD
(因為看不到!)

沒有留言:

張貼留言