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)