SQL中升序排序字段为空值影响排序结果解决方法

SQL中升序排序字段为空值影响排序结果解决方法,第1张

    在公司开发时使用order by *** asc 进行排序时(***字段为int类型,主要做一个按照数值越小排名越前得功能),出现了所有***列为NULL值的记录都排在前面的情况。

解决办法:在排序字段名前加上-,然后改为降序排序,这样子有数值的记录的排序还是跟原来一样(负负得正),并且这把***列值为NULL的记录都排在后面了

适用情况:oracle 对查询结果进行排序时,被排序的栏位存在null值,且要指定NULL值排在最前面或者最后面,

在order by 的时候,用Nvl、NVL2 、Decode、case .....when....end等函数对栏位的null值进行处理。

排序要看用什么字段排序,可以单个字段,也可以多个字段,这些与存在值是否为null无关。

如下列数据

id name class

1     a        1

2     b       null

3     c        null

现在要按id和class排序,其中id为主要排序字段,class为次要排序字段

可写如下语句

select * from 表名 order by id,class。

空列值,order by 语句是可以排序到最后的,你说的是null值吧。这个只能这样:

select *,case when NAME is null or LEN(NAME)=0 ' ' else NAME end as NAME2 from TABLE order by NAME2 desc


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/10803827.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-11
下一篇 2023-05-11

发表评论

登录后才能评论

评论列表(0条)

保存