【问题标题】:Simple MySQL query :- What's wrong in it? [duplicate]简单的 MySQL 查询:- 它有什么问题? [复制]
【发布时间】:2017-11-12 14:07:39
【问题描述】:

我正在执行一个 MySQL 查询:-

SELECT * 
  FROM mytable 
 WHERE name LIKE '%D%' 
   AND id!='1' 

它返回 1 个结果:-

name : Deepak
id: 2
username: NULL 

一切正常。

问题就在这里.. :-

SELECT * 
  FROM mytable 
 WHERE name LIKE '%D%' 
   AND id!='1' 
   AND username!='d'

它返回 0 结果,虽然 mytable 中的 username 为 null,但它仍然没有返回 "Deepak" 的行,因为它在以前的查询中返回。

请您解释一下,为什么会这样? ????

【问题讨论】:

  • 因为 NULL 是它自己的东西。它既不等于也不等于其他任何东西——甚至不等于 NULL!
  • 好的,非常感谢..
  • @MichaelO。没有。虽然你可以侥幸逃脱

标签: mysql


【解决方案1】:

this post所示,需要检查用户名是“is null”还是“<> 'd'”。

SELECT * 
  FROM mytable 
 WHERE name LIKE '%D%' 
   AND id != '1' 
   AND (username IS NULL OR username != 'd')

【讨论】:

    【解决方案2】:

    null 不是一个值,而是缺少它。将其视为“未知”值。每当您在需要值的运算符中使用它时(例如=),结果将是null(未知)。例如。 “用户的名字是什么?我不知道。嗯,它和'd'不同吗?还是不知道”。如果你想处理nulls,你必须明确地使用is 操作符:

    SELECT * 
      FROM mytable 
     WHERE name LIKE '%D%' 
       AND id!='1' 
       AND (username IS NULL OR username!='d')
    

    【讨论】:

      【解决方案3】:

      您不能查询NULL,因为它不代表任何值。您应该更新您的查询以使用IS NULL,如下所示:

      SELECT * 
        FROM mytable 
       WHERE name LIKE '%D%' 
         AND id != 1 
         AND (username IS NULL OR username != 'd')
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多