今天发现了一个诡异的情况:
首先是在记录中可以明显看到
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’
因此再用以下语句查询、发现生效了。文章来源:https://www.toymoban.com/news/detail-605335.html
SELECT count(*) FROM risknoting WHERE noting_state='未标注' and update_time ='0000-00-00 00:00:00'
问题根本原因:SQL建表语句不规范、不应该用0000-00-00 00:00:00当作默认值。正确的建表语句参考:文章来源地址https://www.toymoban.com/news/detail-605335.html
`update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间'
`update_time` timestamp NULL DEFAULT NULL COMMENT '更新时间'
到了这里,关于mysql用is null查不生效的一种情况的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!