问题描述
我正在尝试返回与 Redshift 数据库中的特定正则表达式匹配的所有结果。
示例查询
WITH aa AS
(SELECT disTINCT
id,record,regexp_substr(record,'(#{2})([A-Z]{2,3})',1,1),REGEXP_COUNT(record,3})')
FROM table_a)
SELECT
*
FROM aa
有没有办法返回所有出现的情况?也许使用受计数限制的变量进行迭代?
regexp_substr(record,n)
Oracle 有一个 CONNECT BY LEVEL 的解决方案,但该选项似乎不适用于 Redshift。
解决方法
如果我理解正确,您可以使用 split_part()
代替:
split_part(record,'##',<n>)
然后你可以尝试生成数字并得到结果:
with n as (
select row_number() over () as n
from t
limit 10
)
select t.*,split_part(record,n.n)
from t join
n
on split_part(record,n.n) <> ''