如何返回多列而不是匹配的regexp_matches数组导致psql?

时间:2013-11-18 16:24:06

标签: postgresql

目前我必须手动提取第n个paranthesized子表达式匹配项,并复制正则表达式的parantheses数,

SELECT regexp_matches(col2, '(\d)(\d)(\d)')[1], 
       regexp_matches(col2, '(\d)(\d)(\d)')[2],
       regexp_matches(col2, '(\d)(\d)(\d)')[3]
FROM tab;

我猜手动方式非常低效。

有没有办法将结果数组自动分解为多个列?如果模式的第n个带括号的子表达式不匹配,则返回null?

1 个答案:

答案 0 :(得分:3)

喜欢这个吗?

select res[1] val1, res[2] val2
from (SELECT regexp_matches(col2, '(bar)(beque)') res FROM tab) y;

 val1 | val2  
------+-------
 bar  | beque

分为表格格式:

select unnest(res) as tabular
from (SELECT regexp_matches(col2, '(bar)(beque)') res FROM tab) y;

 tabular 
--------
 bar
 beque