PSQL Regex匹配转换多对一

时间:2015-04-29 18:15:40

标签: regex postgresql

如何转换此查询的结果:

select regexp_matches('number: 772392 number: 911604 number:123456',  '[0-9]{6}', 'g');

由此:

{772392}
{911604}
{123456}

对此?:

{772392,911604,123456}

我尝试通过 array_to_string array_agg 进行转换,但我没有成功。

select array_to_string
(array_agg(regexp_matches
('number: 772392 number: 911604 number:123456', '[0-9]{6}', 'g')), ', ');

1 个答案:

答案 0 :(得分:2)

regexp_matches会返回文本数组

的集合
  

如果模式不包含带括号的子表达式,则返回的每一行都是一个单元素文本数组,其中包含与整个模式匹配的子字符串。

所以你应该

select string_agg(numb[1], ', ') 
    from regexp_matches('number: 772392 number: 911604 number:123456', '[0-9]{6}', 'g')
    as numb;

实现目标