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

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

Patricia Arquette
發布: 2025-01-06 21:43:48
原創
729 人瀏覽過

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

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板