gpt4 book ai didi

MySQL与空值比较

转载 作者:IT老高 更新时间:2023-10-28 23:43:35 25 4
gpt4 key购买 nike

我在 MySQL 表中有一个名为 CODE 的列,它可以为 NULL。假设我有一些 CODE='C' 的行,我想在我的选择结果集中忽略这些行。我的结果集中可以有 CODE=NULL 或 CODE!='C'。

以下查询不返回 CODE 为 NULL 的行:

SELECT * from TABLE where CODE!='C'

但此查询按预期工作,我知道这是正确的方法。

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

我的问题是为什么只有 CODE!='C' 不会返回 CODE=NULL 的行?绝对 'C' 不为 NULL。我们在这里没有将任何值(value)与角色进行比较。有人可以解释一下为什么它不能那样工作吗?

最佳答案

在 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与空值比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9608639/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com