mySQL“最大”,有两列可以为null

时间:2015-04-22 10:10:20

标签: mysql

为什么GREATEST(createdTS, modifiedTS)与每列“null”之一返回“null”?

如果其中一个为null,我只需要另一个的值。如果两者都为null,则为null。

我该怎么做?

我注意到我可以COALESCE使用GREATEST(COALESCE(createdTS,0), COALESCE(modifiedTS,0)) - 这是最好的解决方案吗?

2 个答案:

答案 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。