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)