1. ホーム
  2. mysql

MYSQL 構文で、NULL がある場合に not equal to が評価されない

2023-10-08 15:37:43

質問

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 の値がそれを投げ飛ばしているのでしょうか? どなたか修正を提案していただけませんか?

ありがとうございます。

どのように解決するのですか?

使用 IS NULL または IS NOT NULL を比較するために NULL の値は単に未知であるため、比較することはできません。

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