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