SELECT REGEXP_SUBSTR (STR, '[^-]+',1,1,'i') AS FILTER_1
,REGEXP_SUBSTR (STR, '[^-]+',1,2,'i') AS FILTER_2
,REGEXP_SUBSTR (STR, '[^-]+',1,3,'i') AS FILTER_3
,REGEXP_SUBSTR (STR, '[^-]+',1,4,'i') AS FILTER_4
,REPLACE( DECODE(REGEXP_SUBSTR (STR, '[^-]+',1,5,'i'),'NULL','',REGEXP_SUBSTR (STR, '[^-]+',1,5,'i')) ,'###','-') AS FILTER_REMARK
FROM(
SELECT REGEXP_SUBSTR(V_KEY_IDS, '[^;]+', 1, LEVEL, 'i') AS STR
FROM DUAL
CONNECT BY LEVEL < =REGEXP_COUNT(V_KEY_IDS, ';')+1
);
举例:V_KEY_IDS=郑州-2022/10/07-2-1-郑州###代理基础利润;郑州-2022/10/07-1-1-郑州###代理达标利润;郑州-2022/10/07-1-1-员工工资
注意:在拼接字符串时,如果有字符串中含有“-”、“;”的注意将其用其他不常用的符号代替(例如“##”),避免被截断
具体使用情景:多个栏位作为筛选条件Group by时,需要这些栏位作为“关键ID”去检索;
当组数过多时,建议使用临时表储存