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