MYSQL语法在评估时不等于null

时间:2013-04-24 08:05:22

标签: mysql sql

我遇到了mysql查询的问题。我想排除2的值。所以我想我会这样做:

table products

id | name     | backorder
-------------------
1  | product1 | NULL
2  | product2 | NULL
3  | product3 | 2

SELECT name from `products` p
WHERE backorder <> '2'

但是,这并没有给出product1产品2的预期结果。它给出了一个空结果表。

另一方面,如果我使用

SELECT name from `products` p
WHERE backorder = '2'

然后它产生:product3。但我希望得到那些不等于2的记录。

某些内容无法使用&lt;&gt;'2'。可能是NULL值正在抛弃它吗?任何人都可以建议修复。提前谢谢!

4 个答案:

答案 0 :(得分:55)

使用IS NULLIS NOT NULL来比较NULL值,因为它们只是未知。

SELECT name 
from   products p
WHERE  backorder IS NULL OR backorder <> 2

答案 1 :(得分:9)

您可以使用:

SELECT `name` FROM `products` `p`
WHERE NOT `backorder` <=> '2'

SELECT `name` FROM `products` `p`
WHERE !(`backorder` <=> '2')

答案 2 :(得分:7)

很抱歉打开此

我们也可以使用

SELECT name 
from   products p
WHERE  COALESCE(backorder,1)  <> 2

答案 3 :(得分:-4)

试试这个并看看。

SELECT name from `products` p
WHERE backorder != '2'