Postgresql 如何在psql中以多列而不是匹配的regexp_匹配结果数组的形式返回?

Postgresql 如何在psql中以多列而不是匹配的regexp_匹配结果数组的形式返回?,postgresql,Postgresql,目前我必须手动提取第n个paranthesized子表达式匹配项,并为Paranthesizes的数量复制正则表达式 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

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

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?

像这样

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
像这样

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

你的预期结果是什么?你的预期结果是什么?是的,像这样。这是最常见的处理方式吗?我想“普通”是你需要做的事情的产物。这是从
regexp\u matches
函数中分割结果的典型方法,但您也可以将其分割为表格格式。我将用它更新我的示例。@bma您是否知道
regexp\u匹配的替代解决方案是什么?我使用的是红移数据库,所以我只能使用
REGEXP\u SUBSTR
REGEXP\u COUNT
REGEXP\u INSTR
函数。是的,像这样。这是最常见的处理方式吗?我想“普通”是你需要做的事情的产物。这是从
regexp\u matches
函数中分割结果的典型方法,但您也可以将其分割为表格格式。我将用它更新我的示例。@bma您是否知道
regexp\u匹配的替代解决方案是什么?我使用的是红移数据库,所以我只能使用
REGEXP\u SUBSTR
REGEXP\u COUNT
REGEXP\u INSTR
函数。