「駑馬十駕」を信念に IT系情報を中心に調べた事をコツコツ綴っています。

SQLのLIKE演算子は、特定の文字列パターンに一致するデータを検索する際に使用されます。この検索パターンを指定するために、ワイルドカードと呼ばれる特別な記号が使われます。主なワイルドカードは、%(パーセント)と_(アンダースコア)の2種類です。


1. ワイルドカードの種類とその動作

ワイルドカード記号の意味動作
% (パーセント)ゼロ文字以上の任意の文字列任意の長さ(0文字、1文字、またはそれ以上)の文字列にマッチします。
_ (アンダースコア)任意の1文字正確に1文字分の文字列にマッチします。

2. 代表的な検索パターンと%の使い方

%は、LIKE検索で最も頻繁に使用されるワイルドカードです。配置する場所によって、前方一致後方一致中間一致といった異なる検索を実行できます。

検索パターン構文例動作例: 'Apple', 'Pineapple', 'Apples' から検索
前方一致 (Prefix Search)LIKE 'A%'指定した文字列で始まるデータ'Apple', 'Apples' にマッチ
後方一致 (Suffix Search)LIKE '%e'指定した文字列で終わるデータ'Apple', 'Pineapple' にマッチ
中間一致 (Substring Search)LIKE '%p%e%'指定した文字列を含むデータ'Apple', 'Pineapple' にマッチ

🚨 前方一致・中間一致の注意点

特にパフォーマンスに影響を与える可能性があるため、以下の点に注意が必要です。

  1. 前方一致 (LIKE 'A%') の利点:

    • ほとんどのデータベースシステムでは、前方一致のパターン(LIKE 'A%' のようにワイルドカードが末尾にある場合)は、対象のカラムにインデックスが設定されていれば、それを利用できます

    • これにより、検索速度が非常に高速になり、大量のデータからの検索に適しています。

  2. 中間一致や後方一致 (LIKE '%e'LIKE '%p%') の問題点:

    • パターンがワイルドカードで始まる場合(例: '%e''%p%')、データベースは通常、インデックスを利用できません

    • この場合、テーブルのすべての行をスキャンするフルスキャンが必要となり、データ量が増えると検索パフォーマンスが大幅に低下します。


3. _ (アンダースコア) の使い方

_は、文字数や位置を厳密に指定したい場合に役立ちます。

パターン構文例動作例: 'Data', 'Date', 'Dare', 'Daily' から検索
厳密な文字位置指定LIKE 'Da_e''D'で始まり、その次に任意の1文字、その次に'e'で終わる4文字の文字列'Date', 'Dare' にマッチ
特定の長さの検索LIKE '_____'正確に5文字の文字列のみを検索5文字の単語にのみマッチ


4. エスケープ処理 (ワイルドカード自体を検索する場合)

データにワイルドカード文字(%_)そのものが含まれており、それを文字として検索したい場合は、エスケープ文字を使って特別な意味を無効化する必要があります。

  • 構文: LIKE 'パターン' ESCAPE 'エスケープ文字'

  • 例: データベースに格納されている '100%割引' という文字列を検索したい場合、%を文字として扱う必要があります。

    SQL

    (例では、\#をエスケープ文字として定義し、その直後の%ワイルドカードではなく通常の文字として扱っています。)


SQLのLIKE検索は非常に便利ですが、特に%の使用位置がデータベースのパフォーマンスに大きく影響することを理解し、前方一致を基本とする設計を心がけることが重要です。

Ads by Google