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

jus*_*bie 4 mysql

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

例如:

## if `value` is null, that row is ignored
SELECT * FROM test_table WHERE value != 'some string'
Run Code Online (Sandbox Code Playgroud)

我想知道为什么会这样.

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

dg9*_*g99 6

ANSISQL中,NULL既不等于也不等于任何值,包括它自己.

NULL = 'foo'
NULL != 'foo'
NULL = NULL
NULL != NULL
Run Code Online (Sandbox Code Playgroud)

所有评价NULL.要测试nullness,您必须在查询中使用is nullis not null.