データベースを使った検索では、「完全一致」だけではなく「部分一致」や「パターンマッチング」といった柔軟な検索が必要になる場面がよくあります。例えば、商品名に特定の単語が含まれるデータを探したり、メールアドレスが特定のドメインを含むユーザーを抽出したりする場合です。
本記事では、基本的なLIKE
やILIKE
の使い方をわかりやすく解説します。
ぜひ最後までお付き合いください!
PostgreSQLでよく使われるあいまい検索方法
PostgreSQLでは、あいまい検索を行うために以下の2つの方法がよく使用されます。
LIKE
LIKE
は、特定のパターンに一致するデータを検索する際に使用します。大文字と小文字を区別するため、例えば「TEST」と「test」は別のデータとして扱われます。
基本構文
SELECT * FROM テーブル名 WHERE カラム名 LIKE 'パターン';
'パターン'
の中には、ワイルドカードを含めます。よく使用されるワイルドカードは下記の2種類です。
%
:0文字以上の任意の文字列を表します。_
:任意の1文字を表します。
使用例
-- 名前に「山」が含まれるデータを検索
SELECT * FROM users WHERE name LIKE '%山%';
ILIKE
ILIKE
は LIKE
と同様の機能を持ちながら、大文字と小文字を区別しない検索を実現します。PostgreSQL特有の機能で、データが英語などのアルファベットを含む場合に便利です。
基本構文
SELECT * FROM テーブル名 WHERE カラム名 ILIKE 'パターン';
使用例
-- 名前に「Test」が含まれるデータを、大文字小文字を区別せずに検索
SELECT * FROM users WHERE name ILIKE '%Test%';
これら2つの方法は、あいまい検索を簡単に実現できる便利な構文です。
大文字・小文字を区別しない検索
PostgreSQLで大文字と小文字を区別せずにあいまい検索を行いたい場合、ILIKE
演算子を使用するのが便利です。ILIKE
は、LIKE
と同じようにパターンマッチングを行いますが、大文字・小文字を区別しない点が特徴です。
使用例
以下は、名前に「test」という文字列を含むデータを、大文字小文字を区別せずに検索する例です。
SELECT * FROM users WHERE name ILIKE '%test%';
このクエリでは、「test」「Test」「TEST」など、文字列の大小を問わず一致するデータをすべて取得できます。
大文字小文字の区別が不要な場合は、パフォーマンスを考慮してILIKE
を優先的に使用するのがおすすめです。
まとめ
この記事では、PostgreSQLであいまい検索を行う方法について解説しました。
PostgreSQLのあいまい検索は、柔軟性が高く、幅広いニーズに対応可能です。一方で、適切な方法を選択し、効率を意識したクエリ設計を行うことが重要です。ぜひこの記事を参考に、実際のプロジェクトでPostgreSQLのあいまい検索を活用してみてください!
コメント