-- 음 제가 아직 잘은 몰라서.. 앞에 답변 달아주신걸 응용해서 답변드립니다
with t as (
select '01034502866' as ap_number from dual
union all select '01034508194' as ap_number from dual
union all select '01034512377' as ap_number from dual
union all select '01034512877' as ap_number from dual
union all select '01034516190' as ap_number from dual
)
SELECT ap_number
, REGEXP_REPLACE(ap_number
, '^(02|031|032|033|041|042|043|051|052|053|054|055|061|062|063|064|010|011|016|017|018|019|070|080)(.*)(....)$'
, '\1-****-\3'
) v
FROM t
;
with t as ( select '0103452866' as ap_number from dual union all select '01034508194' as ap_number from dual union all select '01034512377' as ap_number from dual union all select '01034512877' as ap_number from dual union all select '01034516190' as ap_number from dual ) select REGEXP_REPLACE(c0, '-(.*)-', '-'||LPAD('*', c1, '*')||'-') from (select REGEXP_REPLACE(ap_number, '(.{3})(.*)(.{4})', '\1-\2-\3') c0 , LENGTH(REGEXP_REPLACE(ap_number, '(.{3})(.*)(.{4})', '\2')) c1 from t);