SQLの条件式を徹底解説|WHERE・BETWEEN・IN・LIKE の基本と実例

Contents
はじめに
SQL入門で SELECT
文や基本的な WHERE
条件を学んだ方は、「もっと柔軟にデータを絞り込みたい」と感じているのではないでしょうか?
本記事では、WHERE の応用としてよく使われる BETWEEN・IN・LIKE を中心に、実例を交えながらわかりやすく解説します。
まだSQLの基礎を復習していない方は、先に
👉 はじめてのSQL入門ガイド|基本構文から実用例まで徹底解説
を読んでおくと理解がスムーズです。
1. WHEREの基本
まずは基本の WHERE
条件からおさらいしましょう。
SELECT * FROM employees
WHERE age >= 30;
この例では、employees
テーブルから 30歳以上の社員 を取得しています。
よく使う比較演算子は以下の通りです:
演算子 | 意味 |
---|---|
= | 等しい |
<> | 等しくない |
>, < | 大なり、小なり |
>=, <= | 以上、以下 |
さらに詳しい基本構文については
👉 SQL入門ガイド
で解説しています。
2. BETWEEN|範囲指定で抽出
ある範囲の値をまとめて指定したい場合は BETWEEN
を使います。
SELECT * FROM employees
WHERE age BETWEEN 20 AND 29;
👉 このクエリは 20歳から29歳まで の社員を抽出します。
BETWEEN A AND B
は A以上B以下 を意味します。- 数値だけでなく、日付型にも使えます。
SELECT * FROM orders
WHERE order_date BETWEEN '2025-01-01' AND '2025-01-31';
→ 2025年1月の注文データを取得。
3. IN|複数の値を指定して検索
IN
は 複数の候補をまとめて指定 するときに便利です。
SELECT * FROM employees
WHERE department IN ('Sales', 'HR', 'IT');
👉 この例では、所属部署が 営業・人事・IT の社員を取得します。
OR
を並べるよりシンプルに書けるのが利点です。
4. LIKE|部分一致・パターン検索
文字列の一部にパターンを指定したいときは LIKE
を使います。
ワイルドカード
%
:0文字以上の任意の文字_
:任意の1文字
例1:名前が「S」で始まる社員
SELECT * FROM employees
WHERE name LIKE 'S%';
例2:住所に「東京」を含む顧客
SELECT * FROM customers
WHERE address LIKE '%東京%';
例3:社員コードが「A」で始まり3文字目が「5」
SELECT * FROM employees
WHERE emp_code LIKE 'A_5%';
5. 実用例まとめ
条件式は組み合わせることで威力を発揮します。
SELECT * FROM employees
WHERE department = 'Sales'
AND age BETWEEN 25 AND 35
AND name LIKE 'S%';
👉 このクエリは、営業部に所属し、25〜35歳で、名前が「S」で始まる社員 を抽出します。
6. 注意点・補足
- 大文字小文字の扱い
- データベースによって異なります(MySQLはデフォルトで区別しないことが多い)。
- LIKEのエスケープ
%
や_
を文字として検索したい場合はエスケープが必要です。
- NULLの扱い
=
や<>
では判定できないのでIS NULL
/IS NOT NULL
を使用します。- NULLについては次回の記事 👉 SQLのNULLを正しく扱う方法|IS NULL・NOT NULL の基本と注意点 で詳しく解説します。
まとめ
WHERE
条件を理解するとSQLの「検索力」が格段に広がる- BETWEEN:範囲指定
- IN:複数候補を指定
- LIKE:部分一致検索
基礎をしっかり固めることで、実務でも「欲しいデータだけを的確に抽出」できるようになります。
次回はさらに一歩進んで、NULLの扱い方 や「思った通りにデータが取れないときの注意点」を解説します。
関連記事
基礎を振り返りたい方は 👉 SQL入門ガイド
NULLの扱いを学びたい方は 👉 SQLのNULLを正しく扱う方法
さらに実務で役立つJOINを学びたい方は 👉 SQLのJOINを徹底解説|INNER JOIN・LEFT JOINの違いと使いどころ
をご覧ください。