WITH T ( VAL ) AS ( SELECT '0001000200140005' FROM DUAL ) SELECT REGEXP_SUBSTR(VAL, '(.){4}' , 1 , 1 ) VAL1 , REGEXP_SUBSTR(VAL, '(.){4}' , 1 , 2 ) VAL2 , REGEXP_SUBSTR(VAL, '(.){4}' , 1 , 3 ) VAL3 , REGEXP_SUBSTR(VAL, '(.){4}' , 1 , 4 ) VAL4 -- concat , REGEXP_SUBSTR(VAL, '(.){4}' , 1 , 1 ) || '0003' || REGEXP_SUBSTR(VAL, '(.){4}' , 1 , 3 ) || REGEXP_SUBSTR(VAL, '(.){4}' , 1 , 4 ) TOT_VAL -- replace , REGEXP_REPLACE(VAL, '(\d{4})(\d{4})(\d{4})(\d{4})' , '\10003\3\4' ) FROM T