我正在尝试为以下场景编写PostgreSQL查询:
输入:
I)字母数字字符串,例如abcd1234efgh
II)模式,例如[1][2][3][2][1][3]
III)分隔符,例如-
(连字符)
输出:
a-bc-d12-34-e-fgh
我需要查询。功能对我不起作用。
答案 0 :(得分:1)
使用一次regexp_replace()
来电:
SELECT regexp_replace('abcd1234efgh'
,'^(.)(..)(...)(..)(.)(...)'
,'\1-\2-\3-\4-\5-\6'
)
生成请求的结果。
用数字写的相同:
SELECT regexp_replace('abcd1234efgh'
,'^(.{1})(.{2})(.{3})(.{2})(.{1})(.{3})'
,'\1-\2-\3-\4-\5-\6'
)
答案 1 :(得分:0)
select concat_ws('-',
left(a, 1),
substring(a from 2 for 2),
substring(a from 4 for 3),
substring(a from 7 for 2),
substring(a from 9 for 1),
right(a, 3)
)
from (values ('abcd1234efgh')) s(a)
concat_ws
函数将使用其第一个参数作为分隔符。