一、说明
在制作报表的过程中,经常会遇到排序的问题,但是 null
值会被默认为字符串,在排序的时候,会排序到第一位,影响我们的可视化报表的查看。在 oracle
中使用 nulls last
可以将 null
值放在最后,下面提供几种梧桐数据库V5.x中的解决方案。
二、解决方案
实际情况:直接 order by ,null
值排在第一位
select * from test_desc order by fee desc;
使用 nulls last
语法报错,梧桐数据库V5.x不支持该语法
select * from test_desc order by fee desc nulls last;
方案一:使用 case when
替换 order by
内部的内容
select * from test_desc order by case when fee is null then 0 else fee end desc;
方案二:使用 coalesce
函数
select * from test_desc order by coalesce(fee,0) desc;
注:COALESCE
函数在 SQL 中用于从其参数列表中返回第一个非 NULL
值。如果所有参数都是 NULL
,它将返回 NULL
。这个函数非常有用,尤其是在你想用一个默认值替换字段中的 NULL
值时。
另:梧桐数据库V6.x已经支持nulls last语法。
特别的:如果比较排序的是字符类型,而非纯数值类型进行比较,可以将0变更为’0’,这样不论是字符类型还是数值类型,都会按照正确的顺序排序。根据ASCII字符集显示,NULL为000,09为048057,Az为065122。
想了解更多干货,可通过下方扫码关注
详情咨询
可扫码添加上智启元官方客服微信👇