首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么<> 'null‘在MySQL中工作?

为什么<> 'null‘在MySQL中工作?
EN

Stack Overflow用户
提问于 2018-12-19 13:00:01
回答 4查看 87关注 0票数 1

希望这个问题不要太笼统。无法在站点或SQL文档中找到任何内容:

在编写代码时,我对此进行了测试,让我感到惊讶的是,它起了作用:

代码语言:javascript
复制
SELECT * FROM cal_entry WHERE cal_entry.parent_id <> 'null'

它实际上显示了没有NULL值的行(这些是数据库中的实际NULL值,而不是包含'null'的字符串)。

当然,根据文档,我应该使用NOT NULL。顺便说一句,它不适用于= 'null',就像在文档中正确说明的那样。

有人能解释一下吗?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2018-12-19 13:46:23

假设parent_idint列中,查询将返回所有非空行、非零行:

代码语言:javascript
复制
SELECT *
FROM (
    SELECT NULL AS parent_id UNION ALL
    SELECT 0 UNION ALL
    SELECT 1 UNION ALL
    SELECT 2
) AS cal_entry
WHERE cal_entry.parent_id <> 'null'
-- returns 1 and 2 but not 0!

当将数字与字符串进行比较时,MySQL将将字符串转换为数字。下面是一些例子:

  • 'null'变为0
  • 'asdf'变为0
  • '1asdf'变成123
  • '1'变成1

您的查询将表现为:

代码语言:javascript
复制
WHERE cal_entry.parent_id <> 0
票数 1
EN

Stack Overflow用户

发布于 2018-12-19 13:05:42

您正在选择<> 'null'为真的所有行。

将(等于或不等于)与null进行比较是空的,因此如果cal_entry.parent_id为空的行,则条件为false/null。

因此,您的查询将获得所有非空行,也不会包含字符串' null‘。

(注意,你也可以写<>'something_else')

票数 2
EN

Stack Overflow用户

发布于 2018-12-19 13:03:58

这个运算符给出的结果不等于。例如。$var !=空。我们用mysql写成<>。这是一种验证,即该值永远不等于null。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53851798

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档