我在MySQL表中有一个名为CODE的列,它可以为NULL.假设我有一些代码为class='C'的行,我想在 Select 结果集中忽略它们.我可以让CODE=NULL或CODE!='在我的成绩集中.

以下查询不会返回代码为NULL的行:

SELECT * from TABLE where CODE!='C'

但这个查询的效果与预期一样,我知道这是正确的方法.

SELECT * from TABLE where CODE IS NULL OR CODE!='C'

我的问题是为什么只有代码!='C'不返回CODE=NULL的行?"C"绝对不是空的.我们在这里把没有价值比作一个角色.有人能解释一下为什么它不能那样工作吗?

推荐答案

在MySQL中,NULL被认为是"缺失的、未知的值",而不是没有值.看一看at this MySQL Reference on NULL.

任何与NULL的算术比较都不会返回true或false,而是返回NULL.,因此,NULL != 'C'返回NULL,而不是返回true.

任何与"NULL"的算术比较都将返回false.要在SQL中判断这一点:

SELECT IF(NULL=123,'true','false') 

要判断NULL个值,我们需要使用IS NULL&;IS NOT NULL接线员.

Mysql相关问答推荐

MySQL连接序列

含有子查询的MySQL函数出现语法错误

使用触发器markdown 10%

MySQL Group by或Distinct in Window函数

如何在Mysql中使用With和Values

SQL 根据多行值获取记录

MYSQL:范围匹配与周年纪念日

如何从将分钟、天、月和年存储在不同列中的表中查询数据

MySQL如何通过外键ID Select 多行?

为什么在有 BEGIN 和 END 时为存储过程指定分隔符?

将每组的总和除以总数

更改整数时间到日期格式 MM/DD/YY,如 python 中的 datetime.fromtimestamp

SQL 中的双杠 (||) 是什么意思?

If else on WHERE 子句

如何使用 SQL 数据库中的经纬度查找最近的位置?

#1146 - 表 'phpmyadmin.pma_recent' 不存在

MySQL行格式:固定和动态之间的区别?

考虑到 NodeJS,MySQL 和 MySQL2 有什么区别

Sequelize:销毁/删除表中的所有记录

cron 启动的 mysqldump 和密码安全