SQL不等于不返回NULL结果

时间:2015-09-04 19:55:42

标签: mysql sql

id   sku   content
11   IT3   Steel
12   IT4   Steel
15   IT7   Glass

返回结果:

Error: near line 1: unrecognized token: "1d"

为什么结果集中没有返回NULL值的id#13?使用MYSQL。

2 个答案:

答案 0 :(得分:13)

根据你的where子句,它比较null != 'Iron',它根据SQL的3路逻辑来计算UNKNOWN,既不是真也不是假。因此查询不会返回它。

如果您需要生成null行,则应使用

where content !='Iron' or content is null

编辑:还有一个选项是使用关系空的安全等式运算符 <=> ,并带有否定。

not content <=> 'Iron'

从文档中

  

NULL-safe相等。此运算符执行与=运算符相等的比较,但如果两个操作数均为NULL,则返回1而不是NULL;如果一个操作数为NULL,则返回0而不是NULL。

     

&lt; =&gt; operator等效于标准SQL IS NOT DISTINCT FROM运算符。

mysql> SELECT 1 <=> 1, NULL <=> NULL, 1 <=> NULL;
        -> 1, 1, 0
mysql> SELECT 1 = 1, NULL = NULL, 1 = NULL;
        -> 1, NULL, NULL

答案 1 :(得分:0)

ISNULL(content, '') = 'Iron'

这会将null转换为空字符串。