【发布时间】:2014-07-02 09:54:31
【问题描述】:
我在Mysql的合并函数中遇到了一个奇怪的情况:
select start_date, end_date, COALESCE(end_date, start_date)
from log where log_id = 8999134
返回:2011-02-09 23:00:38,NULL,NULL
任何人都知道为什么 coalsce 不能正常工作吗?
编辑:
经过一番研究,我决定尝试在 MYSQL 工作台中进行查询,发现当字段的 end_date = 0000-00-00 00:00:00 时,我用来访问数据库的工具错误地返回 null。 然而问题变得更加奇怪。上面的结果已经是调试了。第一个查询是:
select id, start_date, COALESCE(end_date, start_date)
from log where end_date is null
从我调试的地方:
select id, start_date, end_date, end_date is null
from log where end_date is null
结果是:2011-02-09 23:00:38, 0000-00-00 00:00:00, 0
这是结果的第一行,但与其他行的结果相同。为什么 end_date 对于 where 和 not to coalesce 为 NULL?
两个字段的数据类型都是日期时间
【问题讨论】:
-
如果您的工具与
NULL值混在一起,那么人们可能会怀疑它也与is null混在一起。 -
否,因为我在 SQL Workbench 中测试过,结果是一样的
-
最后一个查询是一个真正的问题。如果您在
where子句中选择 whereend_date is null,则该值在select中必须为真。如果你所说的和你写的完全一样,那可能是 MySQL 中的一个错误。尽管如此,考虑到许多应用程序和使用该软件的人,这似乎不太可能。