ホームページ >データベース >mysql チュートリアル >Postgres 列を複数の行に分割するにはどうすればよいですか?

Postgres 列を複数の行に分割するにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2025-01-06 21:43:48734ブラウズ

How to Split a Postgres Column into Multiple Rows?

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。