Oracle到GaussDB 层次查询的改写方案

Oracle写法:

select id,regexp_substr(isu.ownerids,‘[^,]+’,1,level) ownerids
from t_isu_isu isu
connect by level<=regexp_count(isu.ownerids,‘,’)+1
and ID=prior ID and prior dbms_random.value is not null;

gaussdb:递归不兼容写法

with recursive dsc_hircl_q as
(select id, isu.ownerids, 1 as level from t_isu_isu isu
union all
select isu.id, isu.ownerids, dsc_hircl_q.level + 1 as level
from dsc_hircl_q
inner join t_isu_isu isu on level<=regexp_count(isu.ownerids,‘,’)+1 and isu.id=dsc_hircl_q.id and dbe_random.get_value() is not null)
select id,ownerids from (select id,regexp_substr(isu.ownerids,‘[^,]+’,1,level) ownerids from dsc_hircl_q isu)
where ownerids is not null;

你可能感兴趣的:(oracle,gaussdb,数据库)