PostgreSQL LIKE、NOT LIKE、ワイルドカード (%、_) の例

⚡ スマートサマリー

PostgreSQL LIKE は、パーセント記号とアンダースコアという 2 つのワイルドカードを使用して、テキストをパターンと照合します。このチュートリアルでは、SELECT ステートメントで LIKE と NOT LIKE を使用する方法を、それぞれのケースについて psql と pgAdmin の実例を交えて解説します。

  • 🔍 ペース: Operaトール: LIKE 関数は、列または式をワイルドカードパターンと比較し、一致した場合に true を返します。
  • 🌟 ワイルドカード2枚: % 0 文字以上の文字に一致します。 _ は XNUMX つの文字に正確に一致します。
  • 逆マッチ: NOT と LIKE を組み合わせて、次の条件を満たす行を返します。 パターンに合わせる。
  • 🛠️ 2つのインターフェース: psqlコマンドラインから、またはpgAdmin内でグラフィカルに、同じクエリを実行してください。
  • 🎯 脱出文字: ESCAPE句を使用して、パターン内のリテラル文字「%」または「_」に一致させます。
  • 🤖 AI ブースト: AIデータベースツールは、平易な言葉で検索ニーズをLIKEパターンに変換し、大文字小文字を区別しないマッチングが必要な場合はILIKEを提案します。

PostgreSQL LIKE、NOT LIKE、ワイルドカード (%、_) の例

その PostgreSQL LIKE 演算子は、ワイルドカードを使用してテキスト値をパターンと照合します。検索式がパターンに一致する場合、LIKE は値を返します。 trueワイルドカードは WHERE の条項 SELECT, UPDATE, INSERTまたは DELETE.

何ですか PostgreSQL ワイルドカード?

PostgreSQL 2つのLIKEワイルドカードをサポートしています。

  • パーセント記号 (%): 0個、1個、または複数の文字または数字に一致します。
  • アンダースコア(_): 正確に1文字または1桁の数字と一致する。

2 つの記号は同じパターン内で組み合わせることができます。LIKE をワイルドカードなしで使用した場合、等号 (=) 演算子。

PostgreSQL LIKE構文

基本的なLIKE構文は次のとおりです。

expression LIKE pattern [ ESCAPE 'escape-character' ]
  • 表現 — 文字式。通常は列名またはフィールド名。
  • パターン — ワイルドカードを含む文字式。
  • エスケープ文字 — オプション。リテラルに一致させることができます % or _ 文字。省略した場合、バックスラッシュ(\) はデフォルトのエスケープ文字です。

PostgreSQL % ワイルドカード付きで「いいね!」

その % 符号は、0、1、またはそれ以上の文字に一致します。以下を考慮してください。 Book テーブル:

LIKEの例で使用されているサンプルブックテーブル

「リア王」で始まるタイトルの本を探すには、以下のクエリを実行してください。

SELECT *
FROM
   Book
WHERE
   name LIKE 'Lear%';

クエリの結果は以下のとおりです。

LIKE Lear% クエリ結果が一致する書籍を返す

名前に「by」という語句がどこかに含まれている書籍を探すには:

SELECT *
FROM
   Book
WHERE
   name LIKE '%by%';

クエリの結果は以下のとおりです。

一致する書籍を含むクエリ結果の %by% を LIKE します。

PostgreSQL _ ワイルドカード付きでいいね!

その _ 記号が正確に1文字に一致する。次のクエリは、最初の文字が任意の1文字で、その後に「earn」が続き、さらに任意の接尾辞が続く名前を検索します。

SELECT *
FROM
   Book
WHERE
   name LIKE '_earn%';

クエリの結果は以下のとおりです。

LIKE _earn% クエリ結果が1文字のプレフィックスに一致する

別の例として、末尾が「Beginner」に1文字を加えた文字列に一致するものを探します。

SELECT *
FROM
   Book
WHERE
   name LIKE '%Beginner_';

クエリの結果は以下のとおりです。

%Beginner_ クエリ結果が末尾の 1 文字に一致するようなクエリ結果。

PostgreSQL みたいではなく Operaタ

LIKEとNOTを組み合わせて、 パターンに一致するものをすべてリストアップしてください。例えば、「Post」で始まらない本をすべてリストアップしてください。

SELECT *
FROM
   Book
WHERE
   name NOT LIKE 'Post%';

クエリの結果は以下のとおりです。

「Post」で始まる書籍を除外した結果(「Post」で始まる書籍を除く)

条件を満たす本は1冊だけです。次に、名前が条件を満たすすべての本をリストアップしてください。 「Made」という単語を含む:

SELECT *
FROM
   Book
WHERE
   name NOT LIKE '%Made%';

クエリの結果は以下のとおりです。

%Made% の結果とは異なり、一致する書籍が 3 冊返されます。

3つの行が条件を満たしています。

pgAdminでLIKEを使用する

同じクエリは、pgAdminのクエリツール内でグラフィカルに実行することもできます。

pgAdminにおけるワイルドカードの割合

ステップ1) pgAdminにログインしてください。

ステップ2) 左側のナビゲーションバーで、 データベース、次に以下をクリックします デモ.

データベースとデモが展開されたpgAdminナビゲーションツリー

ステップ3) クエリ エディターにクエリを入力してください。

SELECT *
FROM
   Book
WHERE
   name LIKE 'Lear%';

ステップ4) 詳しくはこちら 実行する.

pgAdminクエリツール(実行ツールバーボタン付き)

結果ペインには、一致する書籍が表示されます。

LIKE Lear% クエリの pgAdmin 結果ペイン

タイトルに「by」が含まれる書籍を検索するには:

ステップ1) クエリ エディターに以下を入力してください。

SELECT *
FROM
   Book
WHERE
   name LIKE '%by%';

ステップ2) 詳しくはこちら 実行する.

pgAdminクエリツールでLIKE %by%クエリを実行中

結果ペインには以下が表示されます。

LIKE %by% クエリの pgAdmin 結果ペイン

_ pgAdmin のワイルドカード

ステップ1) pgAdminにログインしてください。

ステップ2) 左側のナビゲーションバーで、 データベース、次に以下をクリックします デモ.

pgAdminのナビゲーションツリーにデータベースツリーを表示

ステップ3) クエリ エディターにクエリを入力してください。

SELECT *
FROM
   Book
WHERE
   name LIKE '_earn%';

ステップ4) 詳しくはこちら 実行する.

pgAdminクエリツールでLIKE _earn%クエリを実行中

結果ペインには以下が表示されます。

LIKE _earn% クエリの pgAdmin 結果ペイン

ステップ5) 2番目の例を実行してください。

  1. クエリ エディターにクエリを入力してください。
SELECT *
FROM
   Book
WHERE
   name LIKE '%Beginner_';
  1. 詳しくはこちら 実行する.

pgAdminクエリツールでLIKE %Beginner_クエリを実行中

結果ペインには以下が表示されます。

LIKE %Beginner_ クエリの pgAdmin 結果ペイン

pgAdminとは異なります

ステップ1) pgAdminにログインしてください。

ステップ2) 左側のナビゲーションバーで、 データベース、次に以下をクリックします デモ.

NOT LIKEの例のpgAdminナビゲーションツリー

ステップ3) 名前が「Post」で始まらないすべての書籍を一覧表示するには、次のように入力します。

SELECT *
FROM
   Book
WHERE
   name NOT LIKE 'Post%';

ステップ4) 詳しくはこちら 実行する.

pgAdminクエリツールでNOT LIKE Post%クエリを実行中

結果ペインには以下が表示されます。

pgAdmin の結果ペインで NOT LIKE Post% クエリを実行

NOT LIKEクエリに関するpgAdminの追加結果詳細

「Made」という単語がタイトルに含まれていない書籍を一覧表示するには:

ステップ1) クエリ エディターに以下を入力してください。

SELECT *
FROM
   Book
WHERE
   name NOT LIKE '%Made%';

ステップ2) 詳しくはこちら 実行する.

pgAdminクエリツールでNOT LIKE %Made%クエリを実行中

結果ペインには以下が表示されます。

「NOT LIKE %Made%」クエリのpgAdmin結果ペイン

このチュートリアルで使用するデータベースをダウンロードしてください。.

よくあるご質問

LIKE は大文字小文字を区別しますが、ILIKE は大文字小文字を区別しないマッチングを実行します。ILIKE は PostgreSQL 拡張機能。例えば、`ILIKE 'lear%'` という名前は、「Learn」と「LEAR」の両方に一致します。ユーザー入力の大文字小文字が予測できない場合は、ILIKE を使用してください。

ESCAPE句を使用してエスケープ文字を宣言し、リテラルワイルドカードの前に付加します。たとえば、WHERE code LIKE '50!%%' ESCAPE '!' は、感嘆符がパーセント記号をエスケープするため、「50%」で始まる値を検索します。

単純な接頭辞、接尾辞、または部分文字列の一致にはLIKEを使用してください。文字クラス、選択、または量指定が必要な場合は、POSIX正規表現(~と~*)に切り替えてください。正規表現はより強力ですが、基本的なパターンでは一般的にLIKEよりも処理速度が遅くなります。

Yes. AI テキストからSQLへの変換を行うアシスタントなどのツールは、「メールアドレスにacmeが含まれる顧客を探す」といったプロンプトを「name LIKE '%acme%'」に変換し、ワイルドカードのロジックを説明することで、アドホックなレポート作成を迅速化します。

生成型AIはクエリプランを検査し、先頭にワイルドカードを含むLIKE検索用のトリグラムインデックス(pg_trgm)を推奨し、インデックスの使用を妨げるパターンを書き換えます。これにより、大規模なテーブルでもフルテーブルスキャンがミリ秒単位の検索に変わります。 PostgreSQL テーブル。