Oracle TO_NUMBER함수 문자형에서 수치형 으로 변환하기

Oracle DB

지정한 문자데이터를 서식에 맞추어 수치데이터로 변환하는 함수입니다.

문법

사용 문법은 다음과 같습니다.

TO_NUMBER( 수치문자열데이터 [, 서식문자] [, NLS_PARAMETER] )

매개 변수 설명

매개 변수내용
수치문자열데이터 숫자로 변환 할 값입니다. 앞에서 언급 한 많은 데이터 유형 중 하나 일 수 있지만 가장 일반적으로 문자열로 제공됩니다.
서식문자출력 값을 표시해야하는 형식입니다. 아래에 설명 된 유효한 숫자 형식이어야합니다.
NLS_PARAMETER이 값은 통화 기호 및 숫자와 같은 출력 값이 표시되는 방법을 결정하는 데 사용됩니다.

사용 예(‘+1234’ , ‘S9999‘)

플러스 기호를 포함한 수치문자열데이터(‘+1234’)를 수치데이터로 변환하는 서식문자(S) 지정 예입니다.

SQL> select to_number('+1234', 'S9999') xyz from dual;
       XYZ
----------
      1234

플러스 기호를 포함한 수치문자열데이터(‘+1234’)를 수치데이터로 변환하는 경우 서식문자를 지정하지 않으면 다음과 같은 오류가 발생합니다.

SQL> select to_number('+1234', '9999') xyz from dual;
select to_number('+1234', '9999') xyz from dual
                 *
1행에 오류:
ORA-01722: 수치가 부적합합니다

사용 예(‘-12.34’, ‘S9999.99‘)

마이너스 기호, 소수점 기호를 포함한 수치문자열데이터(‘-12.34’)를 수치데이터로 변환하는 서식문자(S 와 .) 지정 예입니다.

SQL> select to_number('-12.34', 'S9999.99') xyz from dual;

       XYZ
----------
    -12.34

마이너스 기호를 포함한 수치문자열데이터(‘-12.34’)를 수치데이터로 변환하는 경우 서식문자(S) 를 지정하지 않아도 기본으로 표시됩니다.

SQL> select to_number('-12.34', '9999.99') xyz from dual;
       XYZ
----------
    -12.34

그렇치만, 다음과 같이 소수점이 존재하는 데이터에 소수점이 없는 서식문자를 지정하면 다음과 같은 오류가 발생합니다.

SQL> select to_number('-12.34', '999999') xyz from dual;
select to_number('-12.34', '999999') xyz from dual
                 *
1행에 오류:
ORA-01722: 수치가 부적합합니다

사용 예(‘12,345’, ‘99,999‘)

금액의 단위 기호를 포함한 수치문자열데이터(‘12,345’)를 수치데이터로 변환하는 서식문자(,)지정 예입니다.

SQL> select to_number('12,345', '99,999') xyz from dual;
       XYZ
----------
     12345

서식문자(,)를 지정하지 않았을 경우 예입니다. 이 경우에 오류를 발생하지 않습니다.

SQL> select to_number('12,345', '99999') xyz from dual;
       XYZ
----------
     12345

사용 예(NLS_CURRENCY)

통화기호 또는 명칭이 지정된 금액을 수치로 취득하는 방법은 다음과 같습니다. 서식 문자열 ‘999L’L은 지정된 -999원’에 대해서 동일 위치의 로컬 통화 기호(NLS_CURRENCY)를 의미합니다.

SQL> select to_number('-999원','999L','NLS_CURRENCY = ''원''') xyz from dual;
       XYZ
----------
      -999

오류발생 예

TO_NUMBER함수 사용에 발생되는 오류에 대해서는 다음 글을 참조 하십시오.

ORA-01722: 수치가 잘못되었습니다. (invalid number)

제목과 URL을 복사했습니다