카테고리:

변환 함수

TO_CHAR , TO_VARCHAR

입력 식을 문자열로 변환합니다. NULL 입력의 경우, 출력은 NULL입니다.

이러한 함수는 동의어입니다.

구문

TO_CHAR( <expr> )
TO_CHAR( <numeric_expr> [, '<format>' ] )
TO_CHAR( <date_or_time_expr> [, '<format>' ] )
TO_CHAR( <binary_expr> [, '<format>' ] )

TO_VARCHAR( <expr> )
TO_VARCHAR( <numeric_expr> [, '<format>' ] )
TO_VARCHAR( <date_or_time_expr> [, '<format>' ] )
TO_VARCHAR( <binary_expr> [, '<format>' ] )
Copy

인자

필수:

expr

모든 데이터 타입의 식입니다.

numeric_expr

숫자 식입니다.

date_or_time_expr

DATE, TIME 또는 TIMESTAMP 형식의 식입니다.

binary_expr

BINARY 또는 VARBINARY 형식의 식입니다.

선택 사항:

format

출력 문자열의 형식입니다.

  • numeric_expr 의 경우, 숫자 식을 해석하는 데 사용되는 SQL 형식 모델을 지정합니다. 자세한 내용은 SQL 형식 모델 섹션을 참조하십시오.

  • date_or_time_expr 의 경우, 문자열을 구문 분석하거나 생성할 예상 형식을 지정합니다. 자세한 내용은 변환 함수의 날짜 및 시간 형식 섹션을 참조하십시오.

    기본값은 다음 세션 매개 변수의 현재 값입니다.

  • binary_expr 의 경우, 문자열을 생성하는 형식을 지정합니다(예: ‘HEX’, ‘BASE64’ 또는 ‘UTF-8’).

    자세한 내용은 지원되는 바이너리 형식의 개요 섹션을 참조하십시오.

반환

이 함수는 VARCHAR 데이터 타입 또는 NULL 값을 반환합니다.

사용법 노트

  • VARIANT, ARRAY 또는 OBJECT 입력의 경우, 출력은 JSON 문서 또는 JSON 기본 값을 포함하는 문자열입니다(VARIANT 또는 OBJECT에 XML 태그가 포함된 경우는 제외. 이 경우, 출력은 XML 문서가 포함된 문자열임).

    • VARIANT에 저장된 문자열은 그대로 유지됩니다(즉, JSON 문자열로 변환되지 않음).

    • JSON null 값은 “null”이라는 단어가 포함된 문자열로 변환됩니다.

다음 예제에서는 숫자, 타임스탬프, 날짜를 문자열로 변환합니다.

숫자를 변환하는 예

숫자 값을 지정된 형식 의 문자열로 변환합니다.

CREATE OR REPLACE TABLE convert_numbers_to_strings(column1 NUMBER);

INSERT INTO convert_numbers_to_strings VALUES
  (-12.391),
  (0),
  (-1),
  (0.10),
  (0.01),
  (3987),
  (1.111);

SELECT column1 AS orig_value,
       TO_CHAR(column1, '">"$99.0"<"') AS D2_1,
       TO_CHAR(column1, '">"B9,999.0"<"') AS D4_1,
       TO_CHAR(column1, '">"TME"<"') AS TME,
       TO_CHAR(column1, '">"TM9"<"') AS TM9,
       TO_CHAR(column1, '">"0XXX"<"') AS X4,
       TO_CHAR(column1, '">"S0XXX"<"') AS SX4
  FROM convert_numbers_to_strings;
Copy
+------------+----------+------------+-------------+------------+--------+---------+
| ORIG_VALUE | D2_1     | D4_1       | TME         | TM9        | X4     | SX4     |
|------------+----------+------------+-------------+------------+--------+---------|
|    -12.391 | >-$12.4< | >   -12.4< | >-1.2391E1< | >-12.391<  | >FFF4< | >-000C< |
|      0.000 | >  $0.0< | >      .0< | >0E0<       | >0.000<    | >0000< | >+0000< |
|     -1.000 | > -$1.0< | >    -1.0< | >-1E0<      | >-1.000<   | >FFFF< | >-0001< |
|      0.100 | >  $0.1< | >      .1< | >1E-1<      | >0.100<    | >0000< | >+0000< |
|      0.010 | >  $0.0< | >      .0< | >1E-2<      | >0.010<    | >0000< | >+0000< |
|   3987.000 | > $##.#< | > 3,987.0< | >3.987E3<   | >3987.000< | >0F93< | >+0F93< |
|      1.111 | >  $1.1< | >     1.1< | >1.111E0<   | >1.111<    | >0001< | >+0001< |
+------------+----------+------------+-------------+------------+--------+---------+

출력은 지정된 형식에 따라 값이 문자열로 변환되는 방식을 보여줍니다.

  • >< 기호는 출력에 포함되는 문자열 리터럴입니다. 이러한 기호를 통해 공백이 삽입된 위치를 더 쉽게 볼 수 있습니다.

  • D2_1 열은 숫자 앞에 $ 가 표시된 값을 표시합니다.

    • 3987 값의 경우 숫자의 정수 부분 자릿수가 형식의 자릿수 위치보다 많으므로 모든 자릿수가 # 으로 인쇄되어 오버플로를 나타냅니다.

    • 0.10, 0.01, 1.111 값의 경우 숫자의 분수 부분에 자릿수가 형식의 자릿수 위치보다 많으므로 분수 값이 잘립니다.

  • D4_1 열은 숫자의 정수 부분에 공백으로 0값이 표시됨을 나타냅니다.

    • 0, 0.10, 0.01 값의 경우 공백이 구분 기호 앞의 0을 대체합니다.

    • 0.10, 0.01, 1.111 값의 경우 숫자의 분수 부분에 자릿수가 형식의 자릿수 위치보다 많으므로 분수 값이 잘립니다.

  • TME 열은 값을 과학적 표기법으로 표시합니다.

  • TM9 열은 숫자 값에 따라 정수 또는 소수로 값을 표시합니다.

  • X4 열은 소수 부분을 제외한 16진수 숫자로 값을 표시합니다.

  • SX4 열은 숫자의 절대값의 16진수로 값을 표시하며, 숫자 기호(+ 또는 -)를 포함합니다.

이 예제에서는 로그 값을 문자열로 변환합니다.

SELECT TO_VARCHAR(LOG(3,4));
Copy
+----------------------+
| TO_VARCHAR(LOG(3,4)) |
|----------------------|
| 1.261859507          |
+----------------------+

타임스탬프와 날짜를 변환하는 예

TIMESTAMP 값을 지정된 형식의 문자열로 변환합니다.

SELECT TO_VARCHAR('2024-04-05 01:02:03'::TIMESTAMP, 'mm/dd/yyyy, hh24:mi hours');
Copy
+---------------------------------------------------------------------------+
| TO_VARCHAR('2024-04-05 01:02:03'::TIMESTAMP, 'MM/DD/YYYY, HH24:MI HOURS') |
|---------------------------------------------------------------------------|
| 04/05/2024, 01:02 hours                                                   |
+---------------------------------------------------------------------------+

DATE 값을 기본 형식의 문자열로 변환합니다.

SELECT TO_VARCHAR('03-April-2024'::DATE);
Copy
+-----------------------------------+
| TO_VARCHAR('03-APRIL-2024'::DATE) |
|-----------------------------------|
| 2024-04-03                        |
+-----------------------------------+

DATE 값을 지정된 형식의 문자열로 변환합니다.

SELECT TO_VARCHAR('03-April-2024'::DATE, 'yyyy.mm.dd');
Copy
+-------------------------------------------------+
| TO_VARCHAR('03-APRIL-2024'::DATE, 'YYYY.MM.DD') |
|-------------------------------------------------|
| 2024.04.03                                      |
+-------------------------------------------------+