为什么 GREATEST(createdTS, modifiedTS)
每列之一为“null”时返回“null”?
如果两者之一为空,我只需要另一个的值。如果两者都为空,则为空。
我该怎么做?
正如我注意到的那样,我可以使用 COALESCE
,例如 GREATEST(COALESCE(createdTS,0), COALESCE(modifiedTS,0))
- 这是最好的解决方案吗?
最佳答案
是的,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
函数。
关于mySQL "greatest"有两列可以为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29794286/