如何实现:在SQL中根据某个字段进行升序排序时,使null值放最后,(类似于oracle中的 NULLS LAST)

请先 登录 后评论

最佳答案 2023-02-09 15:24

下周将发布的2.00.9和1.30.21支持这个特性,语法如下:

order by col [asc | desc] [nulls first | nulls last]


请先 登录 后评论

其它 1 个回答

wale

NULL值被定义为相应数据类型的最小值,因此按升序排序时NULL值总排在最前面。要排在最后,有一个办法是用把NULL填充为该字段类型的最大值,例如:

t=table(1 5 3 NULL 6 NULL 7 8 4 NULL as id)
select * from t order by nullFill(id,2147483647)

返回:

id
1
3
4
5
6
7
8
NULL
NULL
NULL

但这个方法有个限制就是该列不能有值为最大值。碰到这种情况,该字段的类型需转换为更高精度的类型,例如:

t=table(1 5 3 NULL 2147483647 NULL 7 8 NULL as id)
select * from t order by nullFill(long(id),2147483648)
请先 登录 后评论
  • 2 关注
  • 0 收藏,698 浏览
  • sunshine 提出于 2023-02-09 13:31

相似问题