regexp_substr用来分隔字符一例

表结构 cde_tab

cde_id cde_idx cde_key
1 CHANGE_TYPE PP,BUY,MAG,P
2 CHANGE_TYPE MF,BUY,MAG,P
现在的需求是将 cde_key的值以“,”分隔成多个字段值
select cde_id,cde_idx,XX(cde_key) from cde_tab where cde_id = 1;
XX()表示是否有截取字符串的方法,不要存储过程,谢谢
得到结果如下



1 with t as ( 2 select 1 cde_id, 'CHANGE_TYPE' cde_idx, 'PP,BUY,MAG,P' cde_key from dual 3 union all 4 select 2,'CHANGE_TYPE','MF,BUY,MAG,P' from dual 5 ) 6 select cde_id,cde_idx, 7 regexp_substr(cde_key||',','([^,]+),',1,1,'i',1) f1, 8 regexp_substr(cde_key||',','([^,]+),',1,2,'i',1) f2, 9 regexp_substr(cde_key||',','([^,]+),',1,3,'i',1) f3, 10 regexp_substr(cde_key||',','([^,]+),',1,4,'i',1) f4 11* from t SQL> / CDE_ID CDE_IDX F1 F2 F3 F4 ---------- ----------- ---------- ---------- ---------- ---------- 1 CHANGE_TYPE PP BUY MAG P 2 CHANGE_TYPE MF BUY MAG P
原文地址:https://www.cnblogs.com/tracy/p/1940239.html