SQLで部分一致検索を行うにはどうしたらいいの?
LIKEってどうやって使うの?
わかりやすく教えてほしい!
こういった疑問にこたえます。
エンジニアの僕がわかりやすく解説します!
LIKEの使い方
LIKEは部分一致検索を行う場合に使う述語です。
部分一致には大きく分けて3種類あります。
- 前方一致
検索条件となる文字列が検索対象の文字列の最初に位置している - 中間一致
検索条件となる文字列が検索対象のどこかに含まれている - 後方一致
検索条件となる文字列が検索対象の文字列の最後に位置している
具体例を使ってLIKEの使い方を見ていきましょう。
例えば、次のようなsampleテーブルがあったとします。
str1 |
abccc |
cccab |
acccb |
abcc |
ccab |
accb |
このようなテーブルから「ccc」という文字列を含むレコードを選択するとします。
前方一致検索
文字列「ccc」が先頭に出てくるレコードを選択したいとします。
この場合のSQLは次のようになります。
SELECT * FROM sample WHERE str1 LIKE 'ccc%';
実行結果
str1 |
cccab |
ここで「%」は「0文字以上の任意の文字列」を意味する記号で、この場合は「cccではじまる全ての文字列」という意味になります。
中間一致検索
次に、中間一致検索の例として「ccc」を文字列中に含むレコードを選択します。
この場合のSQLは次のようになります。
SELECT * FROM sample WHERE str1 LIKE '%ccc%';
実行結果
str1 |
abccc |
cccab |
acccb |
文字列の最初と最後を「%」で囲むことで「文字列中のどこかにcccがある文字列」という意味になります。
後方一致検索
最後に、文字列が「ccc」で終わるレコードを選択してみましょう。
この場合のSQLは次のようになります。
SELECT * FROM sample WHERE str1 LIKE '%ccc';
実行結果
str1 |
abccc |
文字列の部分一致検索を行うLIKEの使い方まとめ
解説の内容をまとめます。
- LIKEは文字列の部分一致検索を行うときに使う述語
- 部分一致には前方一致、中間一致、後方一致の3種類がある
- 0文字列以上の任意の文字列を表すには「%」を使う
- 任意の1文字を表すには「_」を使う
以上、お疲れ様でした。
コメント