为什么GREATEST(createdTS, modifiedTS)
与每列“null”之一返回“null”?
如果其中一个为null,我只需要另一个的值。如果两者都为null,则为null。
我该怎么做?
我注意到我可以COALESCE
使用GREATEST(COALESCE(createdTS,0), COALESCE(modifiedTS,0))
- 这是最好的解决方案吗?
答案 0 :(得分:2)
是的,null
就是这样,所以你可以使用ifnull
来做。{
https://dev.mysql.com/doc/refman/5.0/en/working-with-null.html
您可以这样做:
mysql> select GREATEST(ifnull(1234,0),ifnull(null,0)) as g;
+------+
| g |
+------+
| 1234 |
+------+
1 row in set (0.00 sec)
如果要对非小数数据进行比较,可以按上述方式进行。
您也可以使用COALESCE
功能。
答案 1 :(得分:1)
在MySQL 5.0.13之前,只有当所有参数都为NULL时,GREATEST()才返回NULL。从5.0.13开始,如果任何参数为NULL,则返回NULL。