最近遇到一個 SQL Server 排序的問題,以前也沒瞭解過,然後這次碰到了。 才發現 SQL Server 排序的問題,在指定的排序列中 null 值會預設排在最前面,因為在 SQL Server 中 null 值預設為最小值。 後來問了一下萬能的百度,找到了下麵一種比較簡單的處理方法。 首先建 ...
最近遇到一個 SQL Server 排序的問題,以前也沒瞭解過,然後這次碰到了。
才發現 SQL Server 排序的問題,在指定的排序列中 null 值會預設排在最前面,因為在 SQL Server 中 null 值預設為最小值。
後來問了一下萬能的百度,找到了下麵一種比較簡單的處理方法。
首先建了一個表插入了一些測試數據。
create table UserInfo ( UserInfoID int not null identity(1,1) primary key, User_No int null, User_Names nvarchar(16) null ) insert into UserInfo(User_No,User_Names) select '104','名稱三' union all select '103','名稱二' union all select '108','名稱七' union all select '105','名稱四' union all select '106','名稱五' union all select '102','名稱一' union all select '107','名稱六' union all select '109','名稱八' insert into UserInfo(User_Names) select '名稱九' union all select '名稱十' select * from UserInfo
下麵先直接排序看下效果。
select UserInfoID,User_No,User_Names from UserInfo order by User_NO asc
可以看到指定排序的列,其值為 null 的排在了最前面。
下麵就是解決辦法。
select UserInfoID,User_No,User_Names from UserInfo order by case when User_NO is null then 1 else 0 end asc,User_NO asc
以上就是解決方法了,既把指定排序列的值為 null 的排在最後了,也可以按照指定的列的值進行排序,是不是很簡單。