首頁 >資料庫 >mysql教程 >如何將 Postgres 欄位拆分為多行?

如何將 Postgres 欄位拆分為多行?

Patricia Arquette
Patricia Arquette原創
2025-01-06 21:43:48790瀏覽

How to Split a Postgres Column into Multiple Rows?

在 Postgres 中將欄位拆分為多行

問題陳述

考慮以下 Postgres表:

subject |  flag
---------+------
this is a test | 2

目標就是將此表轉換為一個新表,其中「主題」列中的每個單字都是新的行,同時保留對應的「標誌」值。

解決方案

在 Postgres 中實現此目的的一種有效方法是使用 LATERAL join 與 string_to_table() 結合使用(在 Postgres 14 中可用) 。這允許我們將“​​主題”列拆分為單獨的標記,並將它們與原始表連接起來。

以下查詢完成此轉換:

SELECT token, flag
FROM tbl, string_to_table(subject, ' ') AS token
WHERE flag = 2;

在此查詢中,我們使用LATERAL join 為「主題」列中的每個標記產生一組行,並且我們根據指定的「標誌」過濾結果

替代方法

對於Postgres 13 及更早版本,可以使用unnest(string_to_array(subject, ' ')) 來取代string_to_table(subject, ' ') .

另一種方法是使用regexp_split_to_table() 函數,它允許基於正規表示式進行更靈活的標記化。然而,這種方法通常比使用 string_to_table() 慢。

以上是如何將 Postgres 欄位拆分為多行?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn