簡體   English   中英

基於分隔字符串的 Postgres 查詢

[英]Postgres Query based on Delimited String

我們在其中一個表中有一個列,它由一個分隔的 ID 字符串組成,如下所示:72,73,313,502。

我需要在查詢中做的是解析該字符串,並為每個 ID 將其連接到另一個表。 所以在這個字符串的情況下,我會得到 4 行......就像另一個表中的 ID 和名稱。

這可以在查詢中完成嗎?

一種選擇是regexp_split_to_table()和橫向連接。 假設 CSV 字符串存儲在table1(col) ,並且您想根據table2(id)連接每個元素,您可以執行以下操作:

select ...  -- whatever columns you want
from table1 t1
cross join lateral regexp_split_to_table(t1.col, ',') x(id)
inner join table2 t2 on t2.id = x.id::int

應該注意的是,在關系數據庫中存儲 CSV 字符串是一種糟糕的設計,幾乎總是應該避免。 列表中的每個值都應使用正確的數據類型存儲為單獨的行。 推薦閱讀:在數據庫列中存儲分隔列表真的有那么糟糕嗎?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM