我正在尝试为以下场景编写 PostgreSQL 查询:
输入:
I) 字母数字字符串,例如abcd1234efgh
II) 模式,例如[1][2][3][2][1][3]
III) 分隔符,例如-
(连字符)
输出:
a-bc-d12-34-e-fgh
我需要一个查询。功能对我不起作用。
我正在尝试为以下场景编写 PostgreSQL 查询:
输入:
I) 字母数字字符串,例如abcd1234efgh
II) 模式,例如[1][2][3][2][1][3]
III) 分隔符,例如-
(连字符)
输出:
a-bc-d12-34-e-fgh
我需要一个查询。功能对我不起作用。
使用一个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'
)
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
函数将使用其第一个参数作为分隔符。