そもそもLIKE句とは
SQLであいまい検索を行う際に使用するクエリです。
該当の文字が含まれているかを確認したい対象の列(カラム)に対して、ワイルドカードを用いることで
対象の列(カラム)に〇〇を含む文字列を検索するという処理ができます。
ワイルドカードとは? ワイルドカードとは、任意の文字列を指定するときに使う「%」や「_」などの特殊文字のことです。 「%」と「_」それぞれの意味は次の通りとなります。 「%」・・・0文字以上の任意の文字列 「_」・・・任意の1文字
LIKE句を使用した検索方法
それでは早速、LIKE句を使用して様々な検索方法を見ていきましょう。
部分一致
部分一致では単純に該当の列(カラム)に〇〇を含むデータがあるかを検索する方法になります。
例) userテーブルのpersonカラムに入っているデータから「田」を含むデータを検索
SELECT person FROM user WHERE person LIKE “%田%“;
上記SQLを実行すると、userテーブルのpersonカラムに入っているデータの「山田」、「田村」、
「太田口」のデータがあった場合、すべて取得対象になります。
前方一致
前方一致では該当の列(カラム)に〇〇を含むデータが前方にあるかを検索する方法になります。
部分一致と同じ例で確認してみましょう。
例) userテーブルのpersonカラムに入っているデータから「田」を含むデータを検索
SELECT person FROM user WHERE person LIKE “田%“;
上記SQLを実行すると、userテーブルのpersonカラムに入っているデータの「山田」、「田村」、
「太田口」のデータがあった場合、「田」が文字の最初にある「田村」を取得します。
後方一致
後方一致では該当の列(カラム)に〇〇を含むデータが後方にあるかを検索する方法になります。
同じように例で確認してみましょう。
例) userテーブルのpersonカラムに入っているデータから「田」を含むデータを検索
SELECT person FROM user WHERE person LIKE “%田”;
上記SQLを実行すると、userテーブルのpersonカラムに入っているデータの「山田」、「田村」、
「太田口」のデータがあった場合、「田」が文字の最後にある「山田」を取得します。
否定(NOT LIKE)
今までは〇〇を含むデータの検索でしたが、NOT LIKEを使用することで〇〇を含まないデータの検索も行うことができます。
下記の例で確認してみましょう。
例) userテーブルのpersonカラムに入っているデータから「田」を含まないデータを検索
SELECT person FROM user WHERE person NOT LIKE “%田%“;
上記SQLを実行すると、userテーブルのpersonカラムに入っているデータの「山田」、「田村」、「上村」
「太田口」のデータがあった場合、「田」を含まない「上村」を取得します。
まとめ
今回はLIKE句の基本的な使い方について解説しました。
特定の文字を含む(含まない)検索を行いたい場合に是非、活用してみてください。
注意として、あいまい検索は処理速度があまり早くない為、
大規模な範囲の検索に使用する場合は注意しましょう。