在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
(因為看不到!)
沒有留言:
張貼留言