当为字符串选择!=时,为什么mySQL不会返回具有空值的行

时间:2014-01-14 23:09:16

标签: mysql

我有一个可以为null的varchar列的表。选择行并指定我希望行的值不等于给定字符串时,它不会返回值为null的行。

例如:

## if `value` is null, that row is ignored
SELECT * FROM test_table WHERE value != 'some string'

我想了解为什么会这样。

实施例: http://sqlfiddle.com/#!2/83f0d/1

1 个答案:

答案 0 :(得分:6)

ANSI SQL中,NULL既不等于也不等于任何值,包括它自己。

NULL = 'foo'
NULL != 'foo'
NULL = NULL
NULL != NULL

全部评估为NULL。要测试空值,您必须在查询中使用is nullis not null