PostgreSQL SUBSTRING() 関数と正規表現の例

⚡ スマートサマリー

PostgreSQL 部分文字列例tracts は、オプションの開始位置と長さを使用して文字列の一部を返します。また、テキストを POSIX 正規表現と照合して、数字やコードなどのパターンを抽出します。

  • ???? 構文: substring( string [from start] [for length] ) は、ソース文字列の一部を返します。
  • 1️⃣ 体位: 文字位置は1から始まり、長さを省略すると文字列の末尾まで読み取られます。
  • 🔎 正規表現: SUBSTRING(string FROM pattern) 例tractsはPOSIX正規表現に一致する最初のテキストです。
  • 🧮 グロウping: パターン内の括弧で囲まれたグループは、一致した部分のうちキャプチャされた部分のみを返します。
  • 甘いもの<XNUMXxXNUMX><XNUMXxXNUMX><XNUMXxAXNUMX><XNUMXxAXNUMX>️️ pgAdmin: pgAdminのクエリエディタ内では、すべての部分文字列クエリは同じ方法で実行されます。
  • 🤖 AIヘルプ: AIアシスタントは、正確な部分文字列抽出のための正規表現パターンを生成および説明します。tracる。

PostgreSQL 正規表現を使用したSUBSTRING関数

何ですか PostgreSQL 部分文字列?

その PostgreSQL 部分文字列関数は、tract は文字列の一部を返します。文字列全体を返すのではなく、その一部だけを返すため、コードのトリミングや固定幅フィールドの読み取りに便利です。

構文

その PostgreSQL 部分文字列関数は次の構文を取ります。

substring( string [from starting_position] [for length] )

技術パラメータ

部分文字列関数では、以下のパラメータが使用されます。

string データ型が varchar、char、string などのソース文字列。
開始位置 オプションのパラメータ。これは、ex の場所を示します。trac文字列の処理が開始されます。このパラメータを省略すると、trac開始位置は1で、これは文字列の最初の文字です。
長さ オプションのパラメータ。表示する文字数を指定します。trac文字列から ted を取得します。このパラメーターを省略すると、関数はtrac開始位置から文字列の末尾までts。

この例では、trac単語の最初の 4 文字 Guru99:

SELECT substring('Guru99' for 4);

コマンドは以下を返します。

PostgreSQL 部分文字列

開始位置を指定しなかったため、trac部分文字列の抽出は位置 1 から開始されました。4 つの文字が抽出されました。trac上記の結果を返すようにしました。

次の例は、開始位置を指定する方法を示しています。

SELECT substring('Guru99' from 1 for 4);

コマンドは以下を返します。

PostgreSQL 部分文字列

私たちは、trac部分文字列の抽出は位置 1 から開始し、4 文字が抽出される必要があります。tracテッド。

私たちにtrac文字列からt 99 Guru99:

SELECT substring('Guru99' from 5);

コマンドは以下を返します。

PostgreSQL 部分文字列

開始位置を5と指定しました。tracテッドは指定されていなかったが、traction は文字列の最後まで実行されました。

次に別の例を示します。

SELECT substring('Guru99' from 5 for 2);

コマンドは以下を返します。

PostgreSQL 部分文字列

私たちはtrac位置5で、2文字がtracテッド。

以下の Book テーブルを考えてみましょう。

PostgreSQL 部分文字列 ブックテーブル

各書籍のタイトルについて大まかなイメージをつかみたい。tracテーブルの名前列から最初の15文字のみを取得します。

SELECT
   id,
   SUBSTRING(name, 1, 15 ) AS name_initial
FROM
   Book
ORDER BY
   id;

コマンドは以下を返します。

PostgreSQL 部分文字列の結果

これで、すべての本の名前についておおよその見当がつきました。

SQL 正規表現による部分文字列の照合

In PostgreSQL、あなたはtrac指定されたPOSIX正規表現に一致する部分文字列を取得します。この場合、部分文字列関数は次の構文を使用します。

SUBSTRING(string FROM matching_pattern)

or

SUBSTRING(string, matching_pattern);

上記のパラメータの説明は以下のとおりです。文字列はソース文字列であり、その データ・タイプ はvarchar、char、stringなどです。matching_patternは、文字列内を検索するために使用されるパターンです。

SELECT
   SUBSTRING (
      'Your age is 22',
      '([0-9]{1,2})'
   ) as age;

コマンドは以下を返します。

SQL 正規表現による部分文字列の照合

入力文字列は「Your age is 22」です。パターンでは、数値パターンを検索します。見つかった場合、部分文字列関数はtrac文字は2文字だけです。

pgAdminを使用して部分文字列を照合する方法

それでは、これらの操作をpgAdminを使ってどのように実行するかを見ていきましょう。データベースを必要としないクエリは、クエリエディタウィンドウから直接実行できます。以下の手順に従ってください。

ステップ1) pgAdmin アカウントにログインします。

ステップ2) pgAdminで、クエリツールアイコンをクリックします。

pgAdmin を使用した部分文字列の一致

クエリエディタウィンドウが開きます。

ステップ3) エディタウィンドウに以下のクエリを入力してください。

SELECT substring('Guru99' for 4);

ステップ4) 「実行」アイコンをクリックしてクエリを実行します。

pgAdmin を使用した部分文字列の一致

ステップ5) クエリの実行が完了しました。以下の結果が返されるはずです。

pgAdmin を使用した部分文字列の一致

例2:

SELECT substring('Guru99' from 1 for 4);

次のような結果が返されます。

pgAdmin を使用した部分文字列の一致

次の例は次のとおりです。

SELECT substring('Guru99' from 5);

次のような結果が返されます。

pgAdmin を使用した部分文字列の一致

例3:

SELECT substring('Guru99' from 5 for 2);

次のような結果が返されます。

pgAdmin を使用した部分文字列の一致

ここで、Demo データベースの Book テーブルを使用して例を実行してみましょう。

ステップ1) pgAdmin アカウントにログインします。

ステップ2) 左側のナビゲーションバーから「データベース」をクリックし、次に「デモ」をクリックします。

pgAdmin を使用した部分文字列の一致

ステップ3) クエリ エディターにクエリを入力します。

SELECT
   id,
   SUBSTRING(name, 1, 15 ) AS name_initial
FROM
   Book
ORDER BY
   id;

ステップ4) 「実行」ボタンをクリックします。

pgAdmin を使用した部分文字列の一致

次のような結果が返されます。

PostgreSQL 部分文字列の結果

これで、すべての本の名前についての基本的なアイデアが得られました。

SQL 正規表現による部分文字列の照合

pgAdmin で同じことを実行するには、次の手順を実行します。

ステップ1) pgAdmin アカウントにログインします。

ステップ2) 「クエリツール」アイコンをクリックします。

SQL 正規表現による部分文字列の照合

クエリエディタウィンドウが開きます。

ステップ3) エディタウィンドウに以下のクエリを入力してください。

SELECT
   SUBSTRING (
      'Your age is 22',
      '([0-9]{1,2})'
   ) as age;

ステップ4) 「実行」アイコンをクリックしてクエリを実行します。

SQL 正規表現による部分文字列の照合

次のような結果が返されます。

SQL 正規表現による部分文字列の照合

このチュートリアルで使用するデータベースをダウンロードする

よくあるご質問

SUBSTRはSUBSTRINGの短縮エイリアスで、文字列の一部を返します。SUBSTRINGはSQL標準のFROMおよびFORキーワードに加え、POSIX正規表現もサポートしていますが、SUBSTRはカンマ区切りの位置と長さの引数のみを受け付けます。

PostgreSQL SUBSTRING関数は1から始まるため、最初の文字は0ではなく1の位置に配置されます。開始位置に1を指定すると、最初の文字以降の文字列が返されます。

POSIXパターンが何も一致しない場合、SUBSTRING関数は空文字列ではなくNULLを返します。IS NULL関数で結果をテストすることで、期待されるパターンが存在しない行を処理できます。

文字の後に続く部分をキャプチャする正規表現を使用します。たとえば、SUBSTRING(email FROM '@(.*)') は @ 記号以降のすべてを返し、各メールアドレスのドメイン部分を取得します。

最初の一致テキストを単純な値として取得する必要がある場合は、SUBSTRING を使用してください。SUBSTRING は最初の一致のみを返すため、すべての一致または複数のキャプチャ グループを配列として取得したい場合は、regexp_matches() を選択してください。

GitHub CopilotなどのAIアシスタントは、平易な英語の説明をPOSIXパターンに変換し、各トークンが何に一致するかを説明し、テスト文字列を提案することで、部分文字列クエリを作成する際の試行錯誤を減らします。tracクエリ。

はい。テキストのどの部分が必要かを説明すると、AIアシスタントが適切な位置または正規表現を含むSUBSTRING呼び出しを作成します。作成した呼び出しはpgAdmin内で実行して調整できます。

はい、POSIX SUBSTRING のマッチングは、デフォルトでは大文字と小文字を区別します。大文字と小文字を区別せずにマッチングするには、両方の入力値を小文字にします。たとえば、SUBSTRING(lower(name) FROM lower(pattern)) のように記述すると、大文字と小文字が同じように扱われます。