简单的MySQL查询:-What';这有什么不对吗?
我正在执行一个MySQL查询:-简单的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在
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')