MYSQL语法未计算不等于NULL

v7pvogib  于 2023-03-17  发布在  Mysql
关注(0)|答案(4)|浏览(107)

我遇到了一个MySQL查询的问题。我想排除值2。所以我想我会做以下:

table products

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

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

然而,这并没有给出产品1、产品2所需的结果,而是给出了一个空的结果表。
另一方面如果我用

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

然后它产生:product3。但是我想得到那些不等于2的记录。
<> '2'有问题。会不会是NULL的值把它弄坏了?有没有人能建议一个修复方法。
先谢了!

ogq8wdun

ogq8wdun1#

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

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

but5z9lq2#

使用<=>运算符。

您可以用途:

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

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

有关<=>运算符的详细信息,请参阅此答案:
What is this operator <=> in MySQL?

to94eoyn

to94eoyn3#

我们也可以使用它:

SELECT p.name 
FROM   products p
WHERE  COALESCE(backorder,1) <> 2
gcxthw6b

gcxthw6b4#

试试看。

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

相关问题