ホームページ >データベース >mysql チュートリアル >Postgres 列を複数の行に分割するにはどうすればよいですか?
次の Postgres テーブルについて考えてみましょう:
subject | flag ---------+------ this is a test | 2
目標このテーブルを、「件名」列の各単語が新しい行となる新しいテーブルに変換することです。
Postgres でこれを実現する効果的な方法の 1 つは、string_to_table() (Postgres 14 で利用可能) と組み合わせて LATERAL 結合を使用することです。これにより、「件名」列を個々のトークンに分割し、元のテーブルと結合できるようになります。
次のクエリは、この変換を実行します。
SELECT token, flag FROM tbl, string_to_table(subject, ' ') AS token WHERE flag = 2;
このクエリでは、 LATERAL 結合を使用して「件名」列の各トークンの行セットを生成し、指定された「フラグ」に基づいて結果をフィルターします。 value.
代替アプローチ
Postgres 13 以前の場合、string_to_table(subject, ' ') の代わりに unnest(string_to_array(subject, ' ')) を使用できます。 .
別のアプローチは、 regexp_split_to_table() 関数。正規表現に基づいてより柔軟なトークン化が可能です。ただし、このアプローチは通常、string_to_table() を使用するよりも遅くなります。
以上がPostgres 列を複数の行に分割するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。