我正在执行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" ,因为它在之前的查询中返回。
请你解释一下,为什么会这样?
答案 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')