2

我有一张像这样的桌子:

id    name (varchar)
--------------------------
1     test
2     some
3     NULL
4     test

当我查询

SELECT * FROM table WHERE name != 'some';

我得到结果:

id    name
--------------------------
1     test
4     test

为什么它不返回带有 的行name == NULL

服务器版本:5.5.31-MariaDB-1~squeeze-log - mariadb.org 二进制分发(协议版本 10)

客户端版本:libmysql - 5.1.66 (mysqli) 协议版本:10

4

3 回答 3

3

因为与NULL. UNKNOWN您必须使用IS运算符。

SELECT * FROM table
WHERE name != 'some' 
OR    name IS NULL
于 2013-07-22T11:52:31.620 回答
2

对于NULL,您需要使用WHERE name IS NULL而不是等同于使用==

您可以在 MySQL 文档中找到更多详细信息(3.3.4.6。使用 NULL 值

在 stackoverflow 中搜索“MySQL NULL”会产生许多相同的问题

于 2013-07-22T11:52:23.297 回答
0

因为NULL不等价于Empty String. NULL根本不存在或未知,而Empty String存在但长度为零的值。如果要搜索包括NULL. 然后您可以在条件中指定它。

SELECT * FROM table WHERE name != 'some' OR name IS NULL
于 2013-07-22T11:54:32.830 回答