繁体   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