【SQL】WHERE句の演算子
WHERE句で条件の絞り込みに使う演算子をまとめました。
比較演算子
| 基本の比較演算子 | 意味 |
|---|---|
| = | 左右の値が等しい |
| < | 右の値より小さい |
| > | 右の値より大きい |
| <= | 以下 |
| >= | 以上 |
| <> | 左右の値が等しくない。「!=」でも可能 |
WHERE 条件1 = 条件2
☀︎条件1と条件2が等しい。
NULL演算子
指定した列の値がNULLである行を取得する。
NULLとは、どのような値も格納されていない状態のこと。
データが不明(unknown)のときと、無意味(not applicable)のときがある。
WHERE 列名 IS NULL
☀︎指定した列の値がNULLである行のみ取得する。
WHERE 列名 IS NOT NULL
☀︎指定した列の値がNULLではない行のみ取得する。
論理演算子
AND演算子・・・かつ
WHERE 条件1 AND 条件2
☀︎両方の条件を満たす行を取得する。
SELECT * FROM customers WHERE name=’John’ AND age>=20;
20歳以上の'John'の行(レコード)を取得する。
OR演算子・・・または
WHERE 条件1 OR 条件2
☀︎どちらかの条件を満たす行を取得する。
NOT演算子・・・否定
WHERE NOT 条件
☀︎両方の条件に当てはまらない行を取得する。
論理演算子の優先度
NOT → AND → OR の順に評価されるが、 カッコ()でくくると優先順位が上がる。
LIKE演算子
指定した文字列を含んでいる行を取得する。
パターンマッチング。
- パターン文字列に使うワイルドカード
「%」・・・任意の0文字以上の文字列
「_(アンダースコア)」・・・任意の1文字- 前方一致、後方一致も可能
- 単なる文字として%や_を使いたいときは、ESCAPE句($)を使う。
WHERE 列名 LIKE ’%パターン文字列%’
☀︎指定した列名でパターン文字列を含んでいる行のみ取得する
BETWEEN演算子
指定した範囲に値が収まっている行を取得する。
WHERE 列名 BETWEEN 値1 AND 値2
☀︎指定した列名で値1〜値2の範囲にある行のみ取得する。
IN/NOT IN演算子
指定した複数の値と一致した行を取得する。
IN演算子
WHERE 列名 IN(値1, 値2, 値3…)
☀︎いずれかの値に一致する行を取得する。
NOT IN演算子
WHERE 列名 NOT IN(値1, 値2, 値3…)
☀︎すべての値に一致しない行を取得する。
ANY/ALL演算子
指定した複数の値と比較し真である行を取得する。
ANY演算子
WHERE 列名 基本の比較演算子 ANY(値1, 値2, 値3…)
☀︎いずれかの値が基本比較演算子で真となる行を取得する。
ALL演算子
WHERE 列名 基本の比較演算子 ALL(値1, 値2, 値3…)
☀︎すべての値が基本比較演算子で真となる行を取得する。