mysql用is null查不生效的一种情况

今天发现了一个诡异的情况:
首先是在记录中可以明显看到
在这里插入图片描述
update_time有null记录。
但用一下sql查询:

SELECT count(*) FROM risknoting WHERE noting_state='未标注' and update_time is NULL

得到结果却是0条。

但应该无论如何都要大于等于1条。
因此,我查询了这个字段的长度

SELECT length(update_time) FROM risknoting where id=438784

发现是19

因此这个NULL根本就不是正常的null值。

看了一下建表语句

`update_time` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00' COMMENT '更新时间',

发现默认是’0000-00-00 00:00:00’
因此再用以下语句查询、发现生效了。

SELECT count(*) FROM risknoting WHERE noting_state='未标注' and update_time ='0000-00-00 00:00:00'

问题根本原因:SQL建表语句不规范、不应该用0000-00-00 00:00:00当作默认值。正确的建表语句参考:

`update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间'
`update_time` timestamp NULL DEFAULT NULL COMMENT '更新时间'

你可能感兴趣的:(mysql,数据库)