dev*_*ngs 32 mysql sql null isnull
我在MySQL表中有一个名为CODE的列,它可以是NULL.假设我有一些CODE ='C'的行,我想在我的select结果集中忽略它.我的结果集中可以有CODE = NULL或CODE!='C'.
以下查询不返回CODE为NULL的行:
SELECT * from TABLE where CODE!='C'
Run Code Online (Sandbox Code Playgroud)
但是这个查询按预期工作,我知道这是正确的方法.
SELECT * from TABLE where CODE IS NULL OR CODE!='C'
Run Code Online (Sandbox Code Playgroud)
我的问题是为什么只有CODE!='C'不返回CODE = NULL的行?绝对'C'不是NULL.我们在这里没有比较一个角色的价值.有人可以说明为什么它不起作用?
Sam*_*aan 46
在MySQL中,NULL被认为是"缺失的,未知的值",而不是没有价值.看看这个关于NULL的MySQL参考.
任何算术比较NULL都不会返回true或false,而是返回NULL.所以,NULL != 'C'返回NULL,而不是返回true.
与'NULL'的任何算术比较都将返回false.要在SQL中检查:
SELECT IF(NULL=123,'true','false')
Run Code Online (Sandbox Code Playgroud)
要检查NULL值,我们需要使用IS NULL&IS NOT NULL运算符.
小智 30
基于我的测试和文档:http://dev.mysql.com/doc/refman/5.0/en/comparison-operators.html
您可以使用<=>比较null并获得布尔结果
注意:它看起来像NOT EQ运算符,但它是EQ运算符
例如:
select x <=> y;
or
select @x <=> @y;
Run Code Online (Sandbox Code Playgroud)
这也比较字符串与null,字符串与字符串等.
cor*_*nuz 14
在SQL中,NULL值是一个特殊值,与任何其他值无法比较.与值直接比较的结果要么始终为FALSE,要么为NULL,具体取决于实现.
要测试空值,您应该使用IS NULL和IS NOT NULL.
SELECT *
FROM `table_name`
WHERE IFNULL(`column_name` != 'C', TRUE)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
46964 次 |
| 最近记录: |