본문 바로가기
오라클 게시판/오라클 함수

【오라클(Oracle) SQL 함수】 TO_CHAR (number) 함수

by 기서무나구물 2021. 10. 21.

포스팅 목차

    o TO_CHAR (number)

     


    문법

     

    to_char_number::=

     


    목적 

    TO_CHAR(NUMBER)  함수는 수치형 값 n을 VARCHAR2 데이터 타입의 문자열 값으로 변환하며, 선택적으로 지정하는 수치형 형식 fmt를 사용하여 숫자를 텍스트로 표시하는 방식을 제어할 수 있다. 수치형 데이터를 문자열로 변환하는 함수이다.

    값 n은 NUMBER, BINARY_FLOAT 또는 BINARY_DOUBER 데이터 타입을 지정할 수 있다. 만약 fmt를 생략하면, n의 유효 자릿수를 유지하기 위해서 충분한 길이의 VARCHAR2 값으로 변환한다.

    n 값이 음수이면 포팻이 적용된 후 부호가 적용된다. 따라서 TO_CHAR(-1, '$9')는 $-1이 아니라 -$1을 반환한다.

    Number 포맷 정보는  "Format Models "참조.

    'nlsparam' 인수는 number 포맷 요소에 의해 반환되는 다음 문자를 지정한다.

    • 소수점 문자.
    • 자릿수 구분 기호.
    • 자국어 현지 통화 기호.
    • 국제 통화 기호.

    이 인수는 아래와 같은 형태를 가질 수 있다.

    'NLS_NUMERIC_CHARACTERS = ''dg''
       NLS_CURRENCY = ''text''
       NLS_ISO_CURRENCY = territory '

    문자 d와 g는 각각 소수점 문자와 자릿수 구분 기호를 나타낸다. 이들은 서로 다른 single-byte 문자여야 한다. 인용부호로 묶인 문자열 내에서는 파라미터 값 주위에 두 개의 작은 따옴표로 감싸야 한다. 통화 기호에는 10개의 문자를 사용할 수 있다.

    만약 'nlsparam' 또는 매개변수 중에 하나를 생략하면, 이 함수는 세션의 기본 매개변수 값을 사용한다.

     


    패키지 함수 비교 - Oracle, Pandas, R Prog, Dplyr, Sqldf, Pandasql, Data.Table, Duckdb

     


    관련 함수

    함수명 함수내용
    CAST 데이터 형식이나 collection 형식을 다른 데이터 형식이나 collection 형식으로 변환한다.
    CONVERT 데이터 베이스 문자 세트를 다른 문자 세트의 문자열로 변환한다.
    TO_CHAR (character) NCHAR, NVARCHAR2, CLOB, NCLOB 데이터를 데이터 베이스 문자 세트로 변환한다.
    TO_CHAR (datetime) 날짜형 데이터를 문자열로 변환하는 함수이다.
    TO_CHAR (number) 수치형 데이터를 문자열로 변환하는 함수이다.
    TO_CLOB LOB열(LOB column)에 존재하는 LCLOB 값 또는 다른 문자열의 값을 CLOB 타입으로 형 변환 작업을 수행한다.
    TO_DATE 문자형 날짜 데이터를 날짜형 데이터로 변환하는 함수이다.
    TO_NCHAR (character) 문자열,CLOB,NCLOB 값을 자국어 문자 세트(National character set)로 변환한다.
    TO_NCHAR (datetime) 날짜 데이터형태의 데이터를 데이터베이스 문자 세트(Database character set) 형태에서 자국어 문자 세트(National character set) 형태로 변환한다.
    TO_NCHAR (number) 수치형 인수 n을 자국어 문자 세트(National character set) 형태의 문자열로 변환한다.
    TO_NCLOB LOB열 또는 다른 문자열에 존재하는 CLOB값을 NCLOB값으로 변환한다.
    TO_NUMBER 인수 expr을 NUMBER 데이터형의 값으로 변환한다.
    UNISTR 유니코드 형태의 텍스트 문자열을 인수로 입력받아서 자국어 문자 세트(National character set) 형태로 인코딩 된 문자열을 반환한다.

     


    예제

    다음 문장은 암묵적 변환을 사용하여 문자열과 수치형 값을 결합하여 수치형 값으로 변환한다.

    Oracle Program
    SELECT TO_CHAR('01110' + 1)
    FROM   dual;

     

    Results
    TO_C
    ----
    1111

     


    다음 예제와 TO_CHAR (character) 함수의 첫 번째 예제를 비교해보자.

    다음 예제는 통화 기호의 왼쪽에 공백으로 채워서 문자열을 출력한다. 선택적으로 지정하는 수치형 타입 fmt에서 L은 자국 현지 통화 기호를 지정하고 MI는 후행 마이너스 기호를 지정한다. 수치형 타입 요소의 전체 목록은 표 2-15를 참조하시오. 이 예제는 세션 매개 변수 NLS_TERRITORY가 AMERICA로 설정된 세션의 출력을 보여준다.

    Oracle Program
    SELECT TO_CHAR(-10000,'L99G999D99MI') "Amount"
    FROM   DUAL;

     

    Results
    Amount
    --------------
      $10,000.00-

     


    다음 예제에서 NLS_CURRENCY 는 L 수치형 타입 요소에서 사용하기 위한 자국 현지 통화 기호로 사용할 문자열을 지정한다. NLS_NUMERIC_CHARACTERS 는 D 수치형 타입 요소의 소수점 구분 기호로 사용할 문자로 쉼표를 지정하고, G 수치형 타입 요소의 자리수 구분 기호로 사용할 문자로 마침표를 지정한다. 이러한 문자들은 독일 등 많은 국가에서 기대되는 문자 형태이다.

    Oracle Program
    SELECT TO_CHAR(-10000,'L99G999D99MI','NLS_NUMERIC_CHARACTERS = '',.''
                   NLS_CURRENCY = ''AusDollars'' ') "Amount"
    FROM   DUAL;

     

    Results
    Amount
    -------------------
    AusDollars10.000,00-

     


    다음 예제에서 NLS_ISO_CURRENCY는 C 수치형 타입 요소에 폴란드 지역에 대한 국제 통화 기호를 사용하도록 데이터베이스에 지시한다.

    Oracle Program
    SELECT TO_CHAR(-10000,'99G999D99C',
                          'NLS_NUMERIC_CHARACTERS = '',.''
                          NLS_ISO_CURRENCY=POLAND') "Amount"
    FROM DUAL;

     

    Results
    Amount
    -----------------
        -10.000,00PLN

     


    TO_CHAR (number) 함수: 예제

    다음 문장은 empl_temp라는 테이블을 생성하고 직원 세부 정보를 이 테이블에 입력한다.

    Oracle Program
    CREATE TABLE empl_temp 
      ( 
         employee_id NUMBER(6), 
         first_name  VARCHAR2(20), 
         last_name   VARCHAR2(25), 
         email       VARCHAR2(25), 
         hire_date   DATE DEFAULT SYSDATE, 
         job_id      VARCHAR2(10), 
         clob_column CLOB 
      );
    
    INSERT INTO empl_temp
    VALUES(111,'John','Doe','example.com','10-JAN-2015','1001','Experienced Employee');
    
    INSERT INTO empl_temp
    VALUES(112,'John','Smith','example.com','12-JAN-2015','1002','Junior Employee');
    
    INSERT INTO empl_temp
    VALUES(113,'Johnnie','Smith','example.com','12-JAN-2014','1002','Mid-Career Employee');
    
    INSERT INTO empl_temp
    VALUES(115,'Jane','Doe','example.com','15-JAN-2015','1005','Executive Employee');

     


    다음 문장은 수치형 데이터를 데이터베이스 문자 집합으로 변환한다.

    Oracle Program
    SELECT To_char(employee_id) "NUM_TO_CHAR" 
    FROM   empl_temp 
    WHERE  employee_id IN ( 111, 112, 113, 115 );

     

    Results
    NUM_TO_CHAR
    --------------------
    111
    112
    113
    115

     

     


    오라클 SQL 함수(Oracle SQL Function) 목록 리스트 링크

     

    [SQL, Pandas, R Prog, Dplyr, SQLDF, PANDASQL, DATA.TABLE] SQL EMP 예제로 만나는 테이블 데이터 처리 방법 리스트 링크

    2024.01 수정

    반응형

    댓글