首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

SQL怎么将空值和非空值排序

2012-06-15 
SQL如何将空值和非空值排序是这样,需要按升序排序,但是有空值(在这里由于是数字型,所以空值都是0)结果空值

SQL如何将空值和非空值排序
是这样,需要按升序排序,但是有空值(在这里由于是数字型,所以空值都是0)结果空值就在最前面。想要的结果是所有按升序排序,但是空值放在最后。不过我只写了这个sql,将非空排在前面,空的排在后面

SQL code
SELECT *  from  TB ORDER BY [列名] <>0 AND [列名]=0 DESC


但是结果里非空的是乱的,并不是按升序排的。

大家知不知道这个sql该如何写呢。

(如果实在没办法了我就只好在程序中循环整个DataTable用程序将空的放到最后)

[解决办法]
实在不行 就 2个select(一个非空升序 一个空) union下。
[解决办法]
SQL code
select * from TB order by case when [列名] is null then (select isnull(MAX([列名]),0) from TB)+1 else [列名] end asc
[解决办法]
探讨

SQL code

select * from TB order by case when [列名] is null then (select isnull(MAX([列名]),0) from TB)+1 else [列名] end asc

[解决办法]
探讨

实在不行 就 2个select(一个非空升序 一个空) union下。

[解决办法]
SQL Server的话可以这么写
SQL code
SELECT * FROM TB ORDER BY (CASE WHEN [列名] > 0 THEN [列名] ELSE 9999 END)
[解决办法]
order by isnull(列名,0)

热点排行