PostgreSQL では、SUBSTRING() 関数を使用して列から部分文字列を抽出できます。この関数を使用すると、抽出する部分文字列の開始位置と長さを指定できます。

  • SUBSTRING() 関数を使用して、PostgreSQL の文字列から部分文字列を取得します。
  • PostgreSQL で SUBSTRING() と FROM および FOR を使用して文字列の部分文字列を取得する
  • Substring() 関数を使用して最初の N 文字を抽出する

構文:

SUBSTRING (string ,start_position , length )

string: 部分文字列を抽出する文字列。

start_position: 部分文字列の開始位置 (1 から始まるインデックス)。

length: 抽出する文字数。

例1: 基本的な使用方法

特定の文字列から部分文字列を抽出するには:

SELECT SUBSTRING('PostgreSQL',1,4) AS substring;

出力:

PostgreSQLの列の部分文字列を抽出する 1

例 2: 位置に基づいて部分文字列を抽出する – SUBSTRING()FROMとFORで

位置に基づいて特定の文字列から部分文字列を抽出するには、SUBSTRING()を使用します。FROMとFORで

SELECT SUBSTRING('PostgreSQL' FROM 1 FOR 4) AS substring;

出力:

PostgreSQLの列の部分文字列を抽出する 2

例 2b: 位置に基づいて部分文字列を抽出する

位置に基づいて特定の文字列から部分文字列を抽出するには、FROM キーワードのみを使用します。FROM は開始位置を定義し、FOR がないため最後まで実行されます。

SELECT SUBSTRING('PostgreSQL' FROM 5) AS substring;

出力:

PostgreSQLの列の部分文字列を抽出する 3

例3: 列から部分文字列を抽出する

列 email を持つテーブル employees_email があり、電子メール アドレスのドメイン部分を抽出したいとします。

PostgreSQLの列の部分文字列を抽出する 4

電子メール アドレスのドメイン部分を抽出するには:

開始位置を定義する FROM でサブ文字列と位置を使用しますが、FOR がないため、最後までかかります。したがって、位置 @ から開始し、最後までかかります。

SELECT *, SUBSTRING(email FROM POSITION('@' IN email) + 1) AS domain FROM  employees_email;

出力:

PostgreSQLの列の部分文字列を抽出する 5

例4: PostgreSQLの列の部分文字列を取得する

PostgreSQL の列の部分文字列は、SUBSTRING() 関数を使用して抽出されます。最初の 7 文字を抽出するには、次のようにします。

select *, substring(email,1,7) as email_new from employees_email

結果のデータフレームは次のようになります

出力:

PostgreSQLの列の部分文字列を抽出する 6