簡體   English   中英

用逗號提取 Substring Postgresql 中的分隔值

[英]Extract Substring in Comma Separated values in Postgresql

Postgresql 中的兩個變量:

V_VAR :='US185268001,US285268002,US385268005'; --Input
V_OUT := '001,002,005'; --Expected output to be stored

知道如何在 postgresql 中進行操作嗎? 每個逗號分隔值的最后 3 個字符。 如何操作 V_VAR 變量以獲取 output 作為 V_OUT 變量。

更新:

請注意:V_VAR 可以有任意數量的 CSV 列表。 這里我有 3 個值用於示例目的。

謝謝, 卡提克

我們可以在這里嘗試使用正則表達式替換:

SELECT
    col,
    REGEXP_REPLACE(col, '.*?([0-9]{3})(,|$)', '\1\2', 'g') AS col_out
FROM yourTable;

這里的策略是惰性匹配,直到匹配(並捕獲)一組中每個代碼的最后 3 位數字,以及第二組中的可選逗號。 然后,我們只替換三位數字和可選的逗號分隔符。

注意:正如@BillKarvin 所指出的,存儲未規范化的 CSV 並不是最佳的數據庫設計。 如果可能,請考慮將每個代碼放入單獨的記錄中。

暫無
暫無

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

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