PostgreSQL の strpos() 関数は、文字列内の部分文字列の位置を見つけるために使用されます。この関数は、部分文字列が最初に出現した位置を返します。部分文字列が見つからない場合は、0 を返します。

構文 – PostgreSQL の strpos() 関数

strpos(string text, substring text)

string: 検索する文字列。

substring: 検索する部分文字列。

例 – PostgreSQL の strpos() 関数

部分文字列の位置を検索:

SELECT strpos('PostgreSQL Expert','Expert');

説明:部分文字列「Expert」は、文字列「PostgreSQL Expert」の 12 番目の位置から始まります。

出力:

PostgreSQL の strpos() 関数 1

部分文字列が見つかりません

SELECT strpos('PostgreSQL Expert','wizard');

説明:文字列「PostgreSQL Expert」に部分文字列「wizard」が見つかりません。部分文字列が見つからない場合はゼロが返されるため、出力は次のようになります。

出力:

PostgreSQL の strpos() 関数 2

大文字と小文字の区別

SELECT strpos('PostgreSQL Expert','expert');

説明:strpos()関数は大文字と小文字を区別するため、文字列「PostgreSQL Expert」には「expert」は見つかりません。部分文字列が見つからない場合はゼロが返されるため、出力は次のようになります。

出力:

PostgreSQL の strpos() 関数 2

PostgreSQL の列で strpos() を使用する:

テーブル内の列に対して strpos() 関数を使用して、各行の値内の部分文字列の位置を見つけることができます。

「Texts」テーブルを使用します

PostgreSQL の strpos() 関数 3
SELECT *, strpos(content, 'PostgreSQL') AS position_of_postgreql FROM Texts;

説明:

  • クエリは、ID、コンテンツ、および各コンテンツ内の部分文字列「PostgreSQL」の位置を返します。
  • 部分文字列「PostgreSQL」が見つからない場合は、0 を返します。

出力:

PostgreSQL の strpos() 関数 4

strpos() 関数を使用して、文字列/サブ文字列の存在に基づいて行をフィルタリングします。

strpos() 関数を使用すると、文字列または部分文字列の有無に基づいて行をフィルタリングできます。

SELECT * FROM Texts
WHERE strpos(content, 'PostgreSQL') > 0;

このクエリは、コンテンツ列にサブ文字列「PostgreSQL」が見つかった行を選択します。

出力:

PostgreSQL の strpos() 関数 5