oracle 将以逗号分隔的列拆成多行的的方法

原表如下

select * from V_RES_CARD_LINKED

image.png

将列拆分成多行的语句

select REGEXP_SUBSTR(ASSET_CODE, '[^,]+', 1, L) AS ASSET_CODE,rackname,type from v_res_card_linked, 
(SELECT LEVEL L FROM DUAL CONNECT BY LEVEL <= 1000)  
WHERE L(+) <= LENGTH(ASSET_CODE) - LENGTH(REPLACE(ASSET_CODE, ',')) + 1

image.png