Oracle SQL - 如何将逗号拆分限制为行

Oracle SQL - how to Limit the comma splitting to rows

我有这样的数据,

ID      RPT_NAME CSV_STRING
------------------------------
abc123  Test1   AA,BB,AC,AD,EF,GG,FG,FD,DF,GG,AA,PL,KI,LO,TT,TE,LF,FG
abc456  Test2   GF,DS,SA,RE,EW,QQ,QW
def123  Test3   HH

我希望将逗号拆分限制为固定数量的逗号行。 Post 那,我将获取下一组记录,直到所有记录都以 6 组为一组推送到行中。

例如,我的偏移量是5个逗号, 我正在尝试获得这样的输出,

ID      RPT_NAME CSV_STRING
----------------------
abc123  Test1   AA,BB,AC,AD,EF,GG
abc123  Test1   GG,FG,FD,DF,GG,AA
abc123  Test1   PL,KI,LO,TT,TE,LF
abc123  Test1   FG
abc456  Test2   GF,DS,SA,RE,EW,QQ
abc456  Test2   QW
def123  Test3   HH

我尽力解释了。 :)

我能得到解决方案吗? TIA 赞赏

with tab(ID,RPT_NAME,CSV_STRING) as
(
 select 'abc123','Test1','AA,BB,AC,AD,EF,GG,FG,FD,DF,GG,AA,PL,KI,LO,TT,TE,LF,FG' from DUAL
  union all
 select 'abc456','Test2','GF,DS,SA,RE,EW,QQ,QW' from DUAL
  union all
 select 'def123','Test3','HH' from DUAL
)


 select id,rpt_name,
        trim(trailing ',' from regexp_substr(csv_string,'([^,]+(,|$)){1,6}',1,level))
   from tab
connect by regexp_substr(csv_string,'([^,]+(,|$)){1,6}',1,level) is not null
    and prior id=id and prior dbms_random.value is not null

regexp_substr 用正则表达式 ([^,]+(,|$)){1,6} 得到一到六个元素。 connect by 复制行直到字符串完成。