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

PostgreSQL でテキスト列を複数の行に分割するにはどうすればよいですか?

Mary-Kate Olsen
リリース: 2025-01-06 21:37:40
オリジナル
600 人が閲覧しました

How to Split a Text Column into Multiple Rows in PostgreSQL?

Postgres で列を行に分割する

Postgres では、テキスト型の 1 つの列を含むテーブルを複数の行を含むテーブルに変換する必要が生じる場合があります。各行はテキスト列のトークンを表します。

サンプル データと必要なデータ出力

次のソース テーブルを考えます:

</p>
<table>
<thead><tr>
<th>subject</th>
<th>flag</th>
</tr></thead>
<tbody><tr>
<td>this is a test</td>
<td>2</td>
</tr></tbody>
</table>
<p>

目的の出力は、次のテーブルです。二columns:

token flag
this 2
is 2
a 2
test 2

LATERAL 結合を使用した解決策

Postgres 14 以降の場合、LATERAL join を string_to_table() 関数とともに使用すると、この変換を実現できます。クエリの最小形式は次のとおりです:
SELECT token, flag
FROM tbl, string_to_table(subject, ' ') token
WHERE flag = 2;
ログイン後にコピー

Postgres 13 以前の場合、string_to_table(subject, ' ') の代わりに unnest(string_to_array(subject, ' ')) を使用する必要があります。

string_to_table() 関数は、対象の列を同じ値を持つ個別のトークン (行ごとに 1 つずつ) に分割します。フラグ列の場合。 WHERE 句は結果をフィルタリングして、値 2 のフラグが設定されたトークンのみを表示します。

このソリューションは、Postgres でテキスト列を個々の行に分割する簡潔かつ効率的な方法を提供します。

以上がPostgreSQL でテキスト列を複数の行に分割するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート