mysql和orcal排序坑

doMore 1,075 2020-06-11

原文链接:https://blog.csdn.net/oxcow/java/article/details/6554168

因为之前工作都是使用mysql,新入职一家公司之后换成orcal,使用 order by 对字段进行排序,当字段为 null 时,处理方式,两者的区别。。。

【Oracle 结论】 
order by colum asc 时,null默认被放在最后
order by colum desc 时,null默认被放在最前
nulls first 时,强制null放在最前,不为null的按声明顺序[asc|desc]进行排序
nulls last 时,强制null放在最后,不为null的按声明顺序[asc|desc]进行排序 
【MySql 结论】
order by colum asc 时,null默认被放在最前
order by colum desc 时,null默认被放在最后
ORDER BY IF(ISNULL(update_date),0,1) null被强制放在最前,不为null的按声明顺序[asc|desc]进行排序
ORDER BY IF(ISNULL(update_date),1,0) null被强制放在最后,不为null的按声明顺序[asc|desc]进行排序

个人建议:如果我们记不清两者对空值默认处理的区别,就明确的声明一下使用什么方式处理。
orcal:

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

mysql:

order by IF(ISNULL(my_field),1,0),my_field;