LIKE の使い方
パターンで探す
書き方
列 LIKE 'パターン' 列 NOT LIKE 'パターン'
% は 0 文字以上、_ はちょうど 1 文字。大文字小文字を区別します(PostgreSQL の ILIKE は区別しない)。
よく使うオプション
| オプション | 意味 |
|---|---|
% | 0 文字以上の、どんな文字でも |
_ | ちょうど 1 文字の、どんな文字でも |
NOT LIKE | パターンに合わない行 |
ILIKE | 大文字と小文字を区別しない(PostgreSQL) |
ESCAPE '文字' | % や _ そのものを探すときの目印を決める |
例
SELECT name FROM customers WHERE name LIKE '山%';
山で始まる名前の客を出します(山田・山本など)。
SELECT email FROM employees WHERE email LIKE '%@example.com';
メールアドレスが @example.com で終わる社員を出します。
SELECT name FROM customers WHERE name LIKE '__';
名前がちょうど 2 文字の客を出します。_ 1 つが 1 文字です。
SELECT email FROM employees WHERE email ILIKE '%SATO%';
sato・Sato・SATO のどれを含んでも見つけます。ILIKE は PostgreSQL だけの書き方です。
よくある間違い・注意
- '%東京%' のように先頭が % だと、インデックスが使えず遅くなりがちです。
- LIKE は大文字と小文字を区別します(MySQL は設定によっては区別しません)。区別したくないときは ILIKE か LOWER(列) LIKE を使います。
- % や _ そのものを探すときは、LIKE '10\%' のように \ を前に付けます。
実際に打って練習する
SQL コースの Lv9「あいまいに探す LIKE」で覚えます。ブラウザの中のシミュレーターで、本物と同じように打って確かめられます。
Lv1〜3 は、登録不要・無料で遊べます(それより先はブロンズ以上のプランで遊べます)。