目前我必须手动提取第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?
答案 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