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

構文 – PostgreSQLのposition()関数

position(substring text IN string text)

substring: 検索する部分文字列

string: 検索する文字列

例 – PostgreSQL の position() 関数

  1. 部分文字列の位置を検索:
SELECT position('Expert' IN 'PostgreSQL Expert');

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

出力:

PostgreSQLのposition()関数 1

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

SELECT position('wizard' IN 'PostgreSQL Expert');

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

出力:

PostgreSQLのposition()関数 2

3. 大文字と小文字の区別

SELECT position('expert' IN 'PostgreSQL Expert');

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

出力:

PostgreSQLのposition()関数 3

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

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

PostgreSQLのposition()関数 4
SELECT *, position('PostgreSQL' IN content) AS position_of_PostgreSQL
FROM Texts;

説明:

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

出力:

PostgreSQLのposition()関数 5

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

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

SELECT * FROM Texts
WHERE position('PostgreSQL' IN content) > 0;

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

出力:

PostgreSQLのposition()関数 6