拆分以分隔符分割的单列为多列(行拆分)

时间:2020-12-13 04:42:40

今天遇到一个问题,把一列带有分隔符分割项的列,转换为多行,表中其它列值不变,经过与同事的讨论用到一个正则表达式函数解决如下:

 

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

用到了两个表关联,这里的level<=10 可以随着要拆分列的项数变化。