mySQL "greatest"有两列可以为空

标签 mysql

为什么 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/

相关文章:

MySQL/phpMyAdmin : remove all the rows less 3 concrete

mysql - 为什么我不能在具有公共(public)字段的 2 个表之间正确执行 JOIN?

php - 使用 Codeigniter 事件记录的多个表查询未给出预期结果

php - 更新数据库中的日期字段会插入所有零值

php - Mysql根据一列去除重复项

php - 如何在PHP分页中仅使用下一个和上一个按钮

Mysql Casting Performance Benchmark问题/数据架构

mysql - dbwritetable删除mysql中的自增字段

mysql - 从表中选择不在当前查询结果中的所有行

mysql - ORDER BY 货币值