WITH T AS ( SELECT '1.2' A , '3.1' B, '7.4' C, NULL D, NULL E FROM DUAL UNION ALL SELECT '4.1' A , '5.1' B, '9.6' C, '1.1' D, NULL E FROM DUAL UNION ALL SELECT '1' A , '7' B, '6' C, '8' D, '9' E FROM DUAL ) SELECT REGEXP_SUBSTR(TXT,'[^,]+',1,LV) COL FROM (SELECT ROWNUM RN , A ||','|| B ||','|| C ||','|| D ||','|| E TXT FROM T ) A ,(SELECT LEVEL LV FROM DUAL CONNECT BY LEVEL <=5 ) B WHERE REGEXP_SUBSTR(TXT,'[^,]+',1,LV) IS NOT NULL ORDER BY RN, ROWNUM