1

我正在尝试为以下场景编写 PostgreSQL 查询:

输入:
I) 字母数字字符串,例如abcd1234efgh
II) 模式,例如[1][2][3][2][1][3]
III) 分隔符,例如-(连字符)

输出:
a-bc-d12-34-e-fgh

我需要一个查询。功能对我不起作用。

4

2 回答 2

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'
                     )
于 2013-03-16T19:10:19.150 回答
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函数将使用其第一个参数作为分隔符。

于 2013-03-16T11:45:19.407 回答