X列の空でないセルをすべて返し、値が2、5、または8ではないクエリを記述したいのですが、これは正しいですか?私の結果は確かに間違っているように見えるからです。
SELECT *
FROM [Example].[dbo].[table]
WHERE X <> '' AND (X <> '2' OR X <> '5' OR X <> '8');
X列の空でないセルをすべて返し、値が2、5、または8ではないクエリを記述したいのですが、これは正しいですか?私の結果は確かに間違っているように見えるからです。
SELECT *
FROM [Example].[dbo].[table]
WHERE X <> '' AND (X <> '2' OR X <> '5' OR X <> '8');
空とは、NULL
(何もない)を意味し、empty string
等しくないためnull
、特別な条件を使用して非NULL
値を除外する必要がありますIS NOT NULL
WHERE X IS NOT NULL AND
X NOT IN('', '2', '5', '8');
SELECT *
FROM [Example].[dbo].[table]
WHERE X <> '' AND X IS NOT NULL AND X NOT IN ('2','5','8')
個人的には、次のように書きます。
SELECT *
FROM [Example].[dbo].[table]
WHERE ISNULL(X,'') <> ''
AND X not in ('2','5','8');
このクエリでは NULLS を考慮していません。
X IS NOT NULL
私はあなたの「OR」を取り出して、あなたが望むように、どちらか一方ではなく、すべての基準を求めます。
他のすべての回答は明示的に除外することに集中しているようですが、それは特別なケースであり、何も真実ではないことNULL
を指摘したいと思います。これにより、クエリが単純化されます。NULL
NULL NOT IN
SELECT * FROM myTable WHERE X NOT IN ('', '2','5','8')
これにより、X がNULL
、「2」、「5」、「8」、または空の文字列ではないすべての行が選択されます。
include が必要な場合NULL
は、代わりにやや特殊な構成を行う必要があります。
SELECT * FROM myTable WHERE X IS NULL OR X NOT IN ('', '2', '5', '8');