我有一张表:
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~pqueeze-log - mariadb.org二进制发行版(协议版本10)
客户端版本:libmysql - 5.1.66(mysqli) Protokoll版本:10
答案 0 :(得分:3)
因为与NULL
进行比较会产生UNKNOWN
。您必须使用IS
运算符。
SELECT * FROM table
WHERE name != 'some'
OR name IS NULL
答案 1 :(得分:2)
对于NULL
,您需要使用WHERE name IS NULL
而不是使用==
等同于<{1}}
您可以在MySQL文档(3.3.4.6. Working with NULL Values)
中找到更多详细信息为“MySQL NULL”搜索stackoverflow会产生许多相同的问题
答案 2 :(得分:0)
因为NULL
与Empty String
不相同。 NULL
存在Empty String
时,NULL
根本不存在或未知,但零长度值。如果您想搜索SELECT * FROM table WHERE name != 'some' OR name IS NULL
。然后你可以在条件中指定它。
{{1}}