在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中文網其他相關文章!