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 Server的话可以这么写
SQL code
SELECT * FROM TB ORDER BY (CASE WHEN [列名] > 0 THEN [列名] ELSE 9999 END)
------解决方案--------------------
order by isnull(列名,0)