首頁 >資料庫 >mysql教程 >如何在 Postgres 中將一列文字拆分為多行?

如何在 Postgres 中將一列文字拆分為多行?

DDD
DDD原創
2025-01-07 00:41:41367瀏覽

How to Split a Column of Text into Multiple Rows in Postgres?

在Postgres 中將列拆分為多行

給定一個表,其中一列包含文本,另一列包含整數標誌,可能有需要將表轉換為新格式,其中文字列中的每個單字成為新表中的單獨行,同時保留相應的標誌值。本文探討如何使用 Postgres 來實現此目的。

一種有效的方法是在 Postgres 14 或更高版本中結合使用 LATERAL join 和 string_to_table() 函數。 LATERAL 關鍵字套用於聯結以建立一個集回傳函數 (SRF),該函數會為父表中的每行傳回多行。 string_to_table() 函數將文字列拆分為單獨的單字,為每個單字建立一個新行。

例如,考慮以下查詢:

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

此查詢執行LATERAL join tbl 表和SRF string_to_table(subject, ' ') 之間,它透過在空格上分割主題列來標記它。 WHERE 子句過濾結果以包含標誌列等於 2 的行。因此,輸出表將為主題列中的每個單字提供一行,並具有相應的標誌值。

中Postgres 13 或更早版本,可以用 unnest(string_to_array(subject, ' ')) 來取代 string_to_table(subject, ' ')。

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

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