Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
简单的MySQL查询:-What';这有什么不对吗?_Mysql - Fatal编程技术网

简单的MySQL查询:-What';这有什么不对吗?

简单的MySQL查询:-What';这有什么不对吗?,mysql,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结果,尽管username在

我正在执行一个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结果,尽管username在mytable中为null,但它仍然没有返回“Deepak”行,正如它在前一个查询中返回的那样

请你解释一下,为什么会这样 如中所示,您需要检查用户名“
是否为null”或“
'd'


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

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

null
不是一个值,而是缺少它。将其视为“未知”值。每当您在期望值的运算符(例如
=
)中使用它时,结果将是
null
(未知)。例如,“用户的名字是什么?我不知道。嗯,它与“d”不同吗?仍然不知道”。如果要处理
null
s,则必须使用
is
运算符显式执行此操作:

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

因为NULL是它自己的东西。它既不等于也不等于其他任何东西——甚至不等于NULL!好的,非常感谢..@MichaelO。不。虽然你可以侥幸逃脱
SELECT * 
  FROM mytable 
 WHERE name LIKE '%D%' 
   AND id!='1' 
   AND (username IS NULL OR username!='d')