본문 바로가기

프로그래밍 관련

[오라클] to_number 함수 오류 처리

뭐.. 따로 방법이 없더군요.
그냥 정규식을 써서 처리해 봤습니다.

select a, b,
    decode(REGEXP_REPLACE(trim(b), 
                 '^-?[0-9]+((\.[0-9]+)([Ee][+-][0-9]+)?)?', ''), null, '숫자', '문자') flag,
    decode(REGEXP_REPLACE(trim(b), 
                 '^-?[0-9]+((\.[0-9]+)([Ee][+-][0-9]+)?)?', ''), null, to_number(trim(b))) val
  from (select 1 a, '1234' b from dual union
        select 2 a, '-1.234E+04' b from dual union
        select 3 a, '1.234E+04' b from dual union
        select 3 a, '1a234E+04' b from dual union
        select 4 a, '(-1.234E+04)' b from dual)

설명은 필요 없겠죠? ^^