简单的MySQL查询: - 它有什么问题?

时间:2017-06-10 18:29:34

标签: mysql

我正在执行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" ,因为它在之前的查询中返回。

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

3 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

null不是价值,而是缺乏价值。将其视为“未知”价值。无论何时在需要值的运算符(例如=)中使用它,结果都是null(未知)。例如。 “用户的名字是什么?我不知道。嗯,它与'd'不同吗?还是不知道”。如果您要处理null,则必须使用is运算符明确地执行此操作:

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