玖叶教程网

前端编程开发入门

Mysql NULL之踩坑记(mysql null+1)

男人站直别趴下,胜者困难不低头。



在开发过程中踩过的坑,在此做下记录,谨防下次入坑。


例:表table

A

B

1

null

2

1

3

2

4

3

5

4

执行sql 如下

SELECT * FROM table WHERE B <> 3 //误以为会返回 id 为 1,2,3,5 四列,实际返回了 2,3,5 三列

得到结果如下

A

B

2

1

3

2

5

4

第一列state为null的也被过滤掉

解决办法1

// 使用or查询
SELECT * FROM table WHERE B <> 3 OR B is Null

解决办法2

// 使用ifnull 函数 将 null 值转化为空字符串
SELECT * FROM table WHERE IFNULL(B,'')  <> 3


踩坑原因

大多数编程语言都是基于二值逻辑的,即逻辑值只有true、false 两个。而sql语言采用的是三值逻辑,除了true、false 之外还有一个“unknown”。

--- 以下所有的都会返回unknown
1 = NULL
1 > NULL
1 < NULL
1 <> NULL
NULL <> NULL

即所有值与NULL比较都返回不确定

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言