Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 为什么从表中选择*值!='1'是否返回空字段?_Mysql - Fatal编程技术网

Mysql 为什么从表中选择*值!='1'是否返回空字段?

Mysql 为什么从表中选择*值!='1'是否返回空字段?,mysql,Mysql,我有一个包含以下数据的表格: id | value 1 | 1 2 | NULL 3 | NULL 我的问题是: SELECT * FROM table WHERE value != '1' 结果为空 为什么查询不返回第2行和第3行?当value等于NULL时,谓词变为:NULL!='1'. 这计算结果为NULL,而不是人们所期望的true 这就是所谓的SQL:表达式的计算结果为true、false或NULL 要正确检查NULL,您需要使用IS NULL: 当value等于NULL时,

我有一个包含以下数据的表格:

id | value
 1 | 1
 2 | NULL
 3 | NULL
我的问题是:

SELECT * FROM table WHERE value != '1'
结果为空

为什么查询不返回第2行和第3行?

当value等于NULL时,谓词变为:NULL!='1'. 这计算结果为NULL,而不是人们所期望的true

这就是所谓的SQL:表达式的计算结果为true、false或NULL

要正确检查NULL,您需要使用IS NULL:

当value等于NULL时,谓词变为:NULL!='1'. 这计算结果为NULL,而不是人们所期望的true

这就是所谓的SQL:表达式的计算结果为true、false或NULL

要正确检查NULL,您需要使用IS NULL:


NULL等于零,甚至它本身也不等于零。本例中不返回2和3。。。我对was NULL的理解是,在对其进行比较时,除非使用is NULL logicNULL对NULL进行计算,否则was NULL的计算结果将始终为false。NULL等于零,甚至它本身也不等于零。本例中不返回2和3。。。我对was NULL的理解在进行比较时总是计算为false,除非使用is NULL逻辑计算NULL
WHERE (value != '1') OR (value IS NULL)