gpt4 book ai didi

mysql - 为什么MySQL在查找不等于时会忽略空值?

转载 作者:可可西里 更新时间:2023-11-01 08:05:43 26 4
gpt4 key购买 nike

我注意到 MySQL 中有一些奇怪的东西,我想看看为什么它会这样,是否有办法改变它?

场景

我的帐户 InnoDB 表包含以下列 id, name, type,其中类型可以为 null。

现在,假设我有 10 条记录类型 = "TEST"和 100 条记录 type IS NULL 和 20 条记录类型 = "STANDARD"

如果我运行这个查询

SELECT * FROM accounts WHERE type <> "TEST"

此查询只会向我显示 type = "STANDARD"的 20 条记录,它会忽略 100 条具有空值的记录。

要解决这个问题,我必须做这样的事情

SELECT * FROM accounts WHERE IFNULL(type,"") <> "TEST"

SELECT * FROM accounts WHERE (type <> "TEST" OR type IS NULL)

NULL 值表示空白“又名无值”,无值表示 <>“测试”

这可能是预期的行为,但我不确定为什么会这样设计

最佳答案

SELECT * FROM accounts WHERE type <> "TEST"

这句话的意思是,

“从帐户中选择列类型的值不等于‘TEST’的行”。

这意味着 mysql 返回类型值不等于“TEST”的记录。
这里,由于NULL表示没有值,所以不返回type列没有任何值的记录。

关于mysql - 为什么MySQL在查找不等于时会忽略空值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26741894/

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