关于null,0,1排序问题

shishui508 2008-09-02 11:30:21
某字段的值或null或0或1
现在我想按1,0,null来排,
可是order by aa desc 还是asc
都达不到效果,如果来做?
不考虑把字段属性加default 0
...全文
396 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
chuifengde 2008-09-02
  • 打赏
  • 举报
回复
DECLARE @a table(a int)
INSERT @a SELECT 1
INSERT @a SELECT 0
INSERT @a SELECT null

SELECT * FROM @a ORDER BY a desc

--result
/*a
-----------
1
0
NULL

(所影响的行数为 3 行)*/
一品梅 2008-09-02
  • 打赏
  • 举报
回复
order by case col when 1 then 1 when 0 then 2 when null then 3 end;
Garnett_KG 2008-09-02
  • 打赏
  • 举报
回复
ORDER BY ISNULL(aa,-1) DESC
dawugui 2008-09-02
  • 打赏
  • 举报
回复
select * from tb
order by case 字段 when null then 1
when 0 then 2 when 1 then 3 end
ybkenan 2008-09-02
  • 打赏
  • 举报
回复
ORDER BY ISNULL(aa,-1) DESC
sai850620 2008-09-02
  • 打赏
  • 举报
回复

直接order by 字段 desc 不就是 1,0,null排序吗?
linux_ch 2008-09-02
  • 打赏
  • 举报
回复



直接order by 字段 就好了 null值會排在前面,order by 字段 desc null值會排在后面
fcuandy 2008-09-02
  • 打赏
  • 举报
回复
你的意思是无沦asc还是desc, null都排最后?
shishui508 2008-09-02
  • 打赏
  • 举报
回复
发现用case同样无法解决问题,
因为aa的值里有null,null代表不确定的值,为定性,非定量,
即case在计算一组布尔表达式以确定结果时,null and null返回的还是null
而非true 或false...

不知各位有何高见?
更不好意思,现在才发现发到sqlserver地盘了..哎.
shishui508 2008-09-02
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 chuifengde 的回复:]
SQL codeDECLARE @a table(a int)
INSERT @a SELECT 1
INSERT @a SELECT 0
INSERT @a SELECT null

SELECT * FROM @a ORDER BY a desc

--result
/*a
-----------
1
0
NULL

(所影响的行数为 3 行)*/
[/Quote]

不好意思,忘说了,在oracle下,desc把null排在了前面(null,1,0)
asc(0,1,null)

27,580

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧