今天遇到一个问题,把一列带有分隔符分割项的列,转换为多行,表中其它列值不变,经过与同事的讨论用到一个正则表达式函数解决如下:
SELECT U.*, REGEXP_SUBSTR(FACTORY, '[^,]+', 1, TMP.LV) AS FACTORY, TMP.LV
FROM YOU_TEST U INNER JOIN (SELECT LEVEL LV FROM DUAL CONNECT BY LEVEL <= 10) TMP
ON TMP.LV <=
LENGTH(U.FACTORY) - LENGTH(REPLACE(U.FACTORY, ',', '')) + 1
ORDER BY u.factory,lv