こんにちは!SQL学習の旅へようこそ。前回までは基本的なSELECT文やWHERE句の使い方を学びましたね。今回は、より柔軟な条件でデータを検索するための強力な武器、LIKE
、BETWEEN
、IN
演算子について学んでいきましょう! これらを使いこなせれば、欲しいデータをピンポイントで見つけ出すスキルが格段にアップしますよ💪
あいまい検索の達人! LIKE演算子 ✨
「特定の文字で始まる名前を探したい」「メールアドレスに特定のドメインが含まれているか確認したい」…そんな時に活躍するのがLIKE
演算子です。LIKE
は、文字列の一部が一致するデータを検索する「あいまい検索」を行います。
LIKE
演算子では、特別な意味を持つ「ワイルドカード」という文字を使います。
ワイルドカード | 意味 | 例 | 説明 |
---|---|---|---|
% (パーセント) |
任意の0文字以上の文字列 | 'A%' |
‘A’で始まる文字列 (例: ‘Apple’, ‘Agent’, ‘A’) |
_ (アンダースコア) |
任意の一文字 | 'T_m' |
‘T’で始まり、’m’で終わる3文字の文字列 (例: ‘Tim’, ‘Tom’) |
具体的な使い方を見てみましょう。例えば、users
テーブルから名前に「o」が含まれるユーザーを探したい場合は、次のように書きます。
SELECT name, email
FROM users
WHERE name LIKE '%o%';
ワイルドカードの組み合わせで、様々な条件を指定できます。
- 前方一致:
'Sato%'
(「Sato」で始まる) - 後方一致:
'%gmail.com'
(「gmail.com」で終わる) - 特定の文字数:
'____'
(ちょうど4文字)
注意点: %
や_
自体を検索したい場合は、エスケープ文字(通常は\
ですが、RDBMSによって異なる場合があります)を使います。例えば、'10%'
という文字そのものを検索したい場合、WHERE column LIKE '10\%' ESCAPE '\'
のように書くことがあります。(使用しているデータベースのマニュアルを確認してくださいね!)
範囲指定ならおまかせ! BETWEEN演算子 ↔️
「価格が1000円以上5000円以下の商品を探したい」「特定の期間に登録したユーザーを抽出したい」…そんな時に便利なのがBETWEEN
演算子です。BETWEEN
は、指定した2つの値の間の範囲(指定した値を含む)にあるデータを検索します。
構文はシンプルです: WHERE column BETWEEN 値1 AND 値2
数値だけでなく、日付や文字列にも使えます。
例を見てみましょう。products
テーブルから価格(price)が1000円から5000円の商品を検索します。
SELECT product_name, price
FROM products
WHERE price BETWEEN 1000 AND 5000;
これは、WHERE price >= 1000 AND price <= 5000
と書くのと同じ意味ですが、BETWEEN
を使うとより直感的で分かりやすいですね!
日付の場合も同様です。2024年1月1日から2024年3月31日までに登録したユーザーを検索するには、次のようにします。(日付の形式はデータベースによって異なります)
SELECT user_id, registration_date
FROM users
WHERE registration_date BETWEEN '2024-01-01' AND '2024-03-31';
範囲外を指定したい場合: NOT BETWEEN
を使うと、指定した範囲”外”のデータを検索できます。例えば、価格が1000円未満または5000円を超える商品を探す場合は WHERE price NOT BETWEEN 1000 AND 5000
と書きます。
複数の値をまとめて指定! IN演算子 ✅
「特定の部署(’Sales’, ‘Marketing’, ‘IT’)に所属する社員を探したい」「IDが1, 5, 10のユーザー情報を取得したい」…このように、複数の候補値のいずれかに一致するデータを検索したい場合に便利なのがIN
演算子です。
IN
演算子は、括弧()
の中に候補となる値をカンマ,
で区切って指定します。
構文: WHERE column IN (値1, 値2, 値3, ...)
例えば、employees
テーブルから部署(department)が’Sales’または’Marketing’の社員を検索します。
SELECT employee_name, department
FROM employees
WHERE department IN ('Sales', 'Marketing');
これは、WHERE department = 'Sales' OR department = 'Marketing'
と書くのと同じ意味です。OR
をたくさん繋げるよりも、IN
を使った方がコードがすっきりして読みやすくなりますね!
候補に含まれないデータを指定したい場合: NOT IN
を使うと、指定した候補値のいずれにも一致”しない”データを検索できます。例えば、’Sales’でも’Marketing’でもない部署の社員を探す場合は WHERE department NOT IN ('Sales', 'Marketing')
と書きます。
NULLの扱いに注意: IN
リストの中にNULL
が含まれていても、カラムの値がNULL
の行はヒットしません。同様に、NOT IN
リストにNULL
が含まれている場合、期待通りの結果にならないことがあります(カラムがNULL
の行も除外されない場合があります)。NULL
を扱う場合はIS NULL
やIS NOT NULL
を使いましょう。
まとめ
今回は、SQLでの検索能力をさらに高めるためのLIKE
、BETWEEN
、IN
演算子を学びました。
- LIKE: 文字列の部分一致(あいまい検索)に使おう!
%
と_
のワイルドカードが鍵。 - BETWEEN: 数値、日付、文字列の範囲指定に便利!
値1 AND 値2
の両端を含む。 - IN: 複数の候補値のいずれかに一致するかを調べたい時に!
OR
の繰り返しを避けられる。
これらの演算子をマスターすれば、より複雑な条件でデータを絞り込むことができるようになります。ぜひ実際に手を動かして、色々なパターンを試してみてくださいね!
次回は、データを集計するための関数(COUNT
, SUM
, AVG
など)について学びます。お楽しみに!🚀
コメント