SQL NOT 演算子
1. NOT 演算子
NOT 演算子は、指定した条件に一致しないすべてのレコードを返すために WHERE 句で使用されます。これは条件の結果を反転させ、真(true)を偽(false)に、偽を真に変換します。
以下の SQL は、国(Country)が「Spain」ではないすべての顧客を選択します。
1.1 使用例:独自の SQL サーバーを構築
「Spain」ではない顧客のみを選択する場合:
SELECT * FROM Customers
WHERE NOT Country = 'Spain';上記の例では、NOT 演算子が = 演算子と組み合わせて使用されています。
また、NOT 演算子は他の演算子と組み合わせて、特定のデータを除外するためにも頻繁に使用されます。例として以下のような組み合わせがあります。
NOT LIKENOT BETWEENNOT INIS NOT NULLNOT EXISTS
2. NOT の構文
SELECT column1, column2, ...
FROM table_name
WHERE NOT condition;3. デモ用データベース
以下は、各例で使用されている Customers テーブルからの抜粋です。
| 顧客ID | 顧客名 | 担当者名 | 住所 | 都市 | 郵便番号 | 国 |
|---|---|---|---|---|---|---|
| 1 | Alfreds Futterkiste | Maria Anders | Obere Str. 57 | Berlin | 12209 | Germany |
| 2 | Ana Trujillo Emparedados y helados | Ana Trujillo | Avda. de la Constitución 2222 | México D.F. | 05021 | Mexico |
| 3 | Antonio Moreno Taquería | Antonio Moreno | Mataderos 2312 | México D.F. | 05023 | Mexico |
| 4 | Around the Horn | Thomas Hardy | 120 Hanover Sq. | London | WA1 1DP | UK |
| 5 | Berglunds snabbköp | Christina Berglund | Berguvsvägen 8 | Luleå | S-958 22 | Sweden |
4. NOT LIKE 演算子
NOT LIKE 演算子は、指定された文字列パターンに一致する行を WHERE 句で除外するために使用されます。
NOT LIKE 演算子と組み合わせてよく使われる 2 つのワイルドカードがあります。
- パーセント記号
%:0 文字、1 文字、または複数文字を表します。 - アンダースコア記号
_:単一の文字を表します。
以下の SQL は、顧客名(CustomerName)が "A" で始まらないすべての顧客を選択します。
4.1 使用例
"A" で始まらない顧客を選択する場合:
SELECT * FROM Customers
WHERE CustomerName NOT LIKE 'A%';5. NOT BETWEEN 演算子
NOT BETWEEN 演算子は、値が指定された範囲(境界値を含む)の外にある行を WHERE 句で選択するために使用されます。
NOT BETWEEN 演算子は、数値、テキスト、または日付型の値に使用できます。
以下の SQL は、顧客ID(CustomerID)が 10 から 60 の間ではないすべての顧客を選択します。
5.1 使用例
CustomerID が 10 から 60 の間にない顧客を選択する場合:
SELECT * FROM Customers
WHERE CustomerID NOT BETWEEN 10 AND 60;6. NOT IN 演算子
NOT IN 演算子は、指定されたリスト内またはサブクエリの結果セット内のいずれの値にも一致しない行を WHERE 句で除外するために使用されます。
以下の SQL は、都市(City)が "Paris" または "London" ではないすべての顧客を選択します。
6.1 使用例
Paris または London ではない都市の顧客を選択する場合:
SELECT * FROM Customers
WHERE City NOT IN ('Paris', 'London');7. NOT Greater Than (~より大きくない)
SQL において「~より大きくない」という条件は、通常、標準的な「以下」を意味する >= 演算子で表現されます。しかし、NOT を使用して表現することも可能です。
以下の SQL は、CustomerID が 50 より大きくないすべての顧客を選択します。
7.1 使用例
CustomerID が 50 より大きくない顧客を選択する場合:
SELECT * FROM Customers
WHERE NOT CustomerID > 50;8. NOT Less Than (~より小さくない)
SQL において「~より小さくない」という条件は、通常、標準的な「以上」を意味する <= 演算子で表現されます。
以下の SQL は、CustomerID が 50 より小さくないすべての顧客を選択します。
8.1 使用例
CustomerID が 50 より小さくない顧客を選択する場合:
SELECT * FROM Customers
WHERE NOT CustomerID < 50;