mysql中null和空值的区别

2018-01-30  本文已影响0人  菜鸟要逆袭

背景:

今天因为MySQL中NULL和空值的区分错误,解决一个很简单的数据库查询问题花了一个小时,很是懊悔,所以开始正文吧!

区别详细:

示例:

id (bigint increment) sid (bigint) date
1 NULL 2018-1-1 00:00:00
2 0 NULL
3 0 2018-1-1 00:00:00
//获得sid为空的数量:1
SELECT COUNT(*) FROM TEST WHERE SID IS NULL; 

//获得sid不为空的数量:2
SELECT COUNT(*) FROM TEST WHERE SID IS NOT NULL; 

//获得sid为空值的数量:2
SELECT COUNT(*) FROM TEST WHERE SID = ''; 

//获得sid为‘0’的数量:2
SELECT COUNT(*) FROM TEST WHERE SID = '0'; 

//获得date为空的数量:1
SELECT COUNT(*) FROM TEST WHERE DATE IS NULL; 

//获得date不为空的数量:2
SELECT COUNT(*) FROM TEST WHERE DATE IS NOT NULL; 

//获得date为空值的数量:0
SELECT COUNT(*) FROM TEST WHERE DATE =''; 

注:上面sid为空值和sid为'0'的查询结果相同是因为,mysql默认bigint的值为NULL,但是NULL又不是INT类型,所以mysql开发人员默认将其默认值设为'0',这一点一定要注意,今天就因为这个卡了一个小时 %>_<%

上一篇 下一篇

猜你喜欢

热点阅读