본문으로 바로가기
본문으로 바로가기

형 변환 함수

데이터 변환 시 흔한 문제

ClickHouse는 일반적으로 C++ 프로그램과 동일한 동작을 따릅니다.

to<type> 함수와 cast는 경우에 따라 다르게 동작합니다. 예를 들어 LowCardinality의 경우 castLowCardinality 특성을 제거하지만, to<type> 함수는 제거하지 않습니다. 널 허용(Nullable)도 마찬가지이며, 이 동작은 SQL 표준과 호환되지 않습니다. cast_keep_nullable 설정을 사용하여 변경할 수 있습니다.

참고

데이터 타입의 값이 더 작은 데이터 타입으로 변환될 때(예: Int64에서 Int32로), 또는 서로 호환되지 않는 데이터 타입 간에 변환될 때(예: String에서 Int로) 잠재적인 데이터 손실이 발생할 수 있습니다. 결과가 예상과 일치하는지 반드시 주의 깊게 확인하십시오.

예:

SELECT
    toTypeName(toLowCardinality('') AS val) AS source_type,
    toTypeName(toString(val)) AS to_type_result_type,
    toTypeName(CAST(val, 'String')) AS cast_result_type

┌─source_type────────────┬─to_type_result_type────┬─cast_result_type─┐
│ LowCardinality(String) │ LowCardinality(String) │ String           │
└────────────────────────┴────────────────────────┴──────────────────┘

SELECT
    toTypeName(toNullable('') AS val) AS source_type,
    toTypeName(toString(val)) AS to_type_result_type,
    toTypeName(CAST(val, 'String')) AS cast_result_type

┌─source_type──────┬─to_type_result_type─┬─cast_result_type─┐
│ Nullable(String) │ Nullable(String)    │ String           │
└──────────────────┴─────────────────────┴──────────────────┘

SELECT
    toTypeName(toNullable('') AS val) AS source_type,
    toTypeName(toString(val)) AS to_type_result_type,
    toTypeName(CAST(val, 'String')) AS cast_result_type
SETTINGS cast_keep_nullable = 1

┌─source_type──────┬─to_type_result_type─┬─cast_result_type─┐
│ Nullable(String) │ Nullable(String)    │ Nullable(String) │
└──────────────────┴─────────────────────┴──────────────────┘

toString 함수에 대한 참고 사항

toString 계열 함수는 숫자, 문자열(고정 문자열 제외), 날짜, 그리고 시간 정보를 포함한 날짜를 서로 변환하는 데 사용됩니다. 이들 모든 함수는 하나의 인자만 받습니다.

  • 문자열로 변환하거나 문자열에서 변환할 때, 값은 TabSeparated 형식(및 거의 모든 다른 텍스트 형식)과 동일한 규칙으로 형식화되거나 파싱됩니다. 문자열을 파싱할 수 없으면 예외가 발생하고 요청이 취소됩니다.
  • 날짜를 숫자로 또는 그 반대로 변환할 때, 해당 날짜는 유닉스 epoch 시작 시점부터의 일 수에 대응합니다.
  • 시간 정보를 포함한 날짜를 숫자로 또는 그 반대로 변환할 때, 해당 날짜-시간 값은 유닉스 epoch 시작 시점부터의 초 수에 대응합니다.
  • DateTime 인자를 받는 toString 함수는 두 번째 인자로 time zone 이름을 포함하는 String 인자를 받을 수 있습니다(예: Europe/Amsterdam). 이 경우 시간은 지정된 time zone에 따라 형식화됩니다.

toDate/toDateTime 함수에 대한 참고 사항

toDate/toDateTime 함수의 날짜 및 날짜-시간 형식은 다음과 같이 정의됩니다:

YYYY-MM-DD
YYYY-MM-DD hh:mm:ss

예외적으로, UInt32, Int32, UInt64, Int64 숫자형 타입을 Date로 변환할 때 값이 65536 이상이면, 해당 값을 일수(day)가 아닌 Unix 타임스탬프로 해석한 뒤 날짜로 반올림합니다. 이를 통해 일반적으로 자주 사용하는 toDate(unix_timestamp) 형태를 지원할 수 있으며, 그렇지 않으면 오류가 발생하므로 더 번거로운 toDate(toDateTime(unix_timestamp)) 형태로 작성해야 합니다.

날짜(Date)와 시간 정보를 포함한 날짜(DateTime) 간 변환은 자연스럽게 처리되며, 시간 값을 0으로 채워 넣거나 시간 값을 제거하는 방식으로 수행됩니다.

숫자형 타입 간 변환은 C++에서 서로 다른 숫자형 타입 간 대입에 사용하는 규칙과 동일한 규칙을 따릅니다.

예시

쿼리:

SELECT
    now() AS ts,
    time_zone,
    toString(ts, time_zone) AS str_tz_datetime
FROM system.time_zones
WHERE time_zone LIKE 'Europe%'
LIMIT 10

결과:

┌──────────────────ts─┬─time_zone─────────┬─str_tz_datetime─────┐
│ 2023-09-08 19:14:59 │ Europe/Amsterdam  │ 2023-09-08 21:14:59 │
│ 2023-09-08 19:14:59 │ Europe/Andorra    │ 2023-09-08 21:14:59 │
│ 2023-09-08 19:14:59 │ Europe/Astrakhan  │ 2023-09-08 23:14:59 │
│ 2023-09-08 19:14:59 │ Europe/Athens     │ 2023-09-08 22:14:59 │
│ 2023-09-08 19:14:59 │ Europe/Belfast    │ 2023-09-08 20:14:59 │
│ 2023-09-08 19:14:59 │ Europe/Belgrade   │ 2023-09-08 21:14:59 │
│ 2023-09-08 19:14:59 │ Europe/Berlin     │ 2023-09-08 21:14:59 │
│ 2023-09-08 19:14:59 │ Europe/Bratislava │ 2023-09-08 21:14:59 │
│ 2023-09-08 19:14:59 │ Europe/Brussels   │ 2023-09-08 21:14:59 │
│ 2023-09-08 19:14:59 │ Europe/Bucharest  │ 2023-09-08 22:14:59 │
└─────────────────────┴───────────────────┴─────────────────────┘

toUnixTimestamp 함수도 함께 참고하십시오.

CAST

도입: v1.1

값을 지정된 데이터 타입으로 변환합니다. reinterpret 함수와 달리, CAST는 대상 타입에서도 동일한 값을 생성하려고 시도합니다. 이렇게 변환할 수 없는 경우 예외가 발생합니다.

구문

CAST(x, T)
or CAST(x AS T)
or x::T

인수

  • x — 임의의 데이터 타입 값. Any
  • T — 대상 데이터 타입. String

반환 값

대상 데이터 타입으로 변환된 값을 반환합니다. Any

예제

기본 사용법

SELECT CAST(42, 'String')
┌─CAST(42, 'String')─┐
│ 42                 │
└────────────────────┘

AS 구문 사용

SELECT CAST('2025-01-01' AS Date)
┌─CAST('2025-01-01', 'Date')─┐
│                 2025-01-01 │
└────────────────────────────┘

:: 구문 사용

SELECT '123'::UInt32
┌─CAST('123', 'UInt32')─┐
│                   123 │
└───────────────────────┘

accurateCast

도입 버전: v1.1

값을 지정된 데이터 타입으로 변환합니다. CAST와 달리 accurateCast는 더 엄격하게 타입을 검사하며, 변환으로 인해 데이터 정밀도가 손실되거나 변환 자체가 불가능한 경우 예외를 발생시킵니다.

이 함수는 정밀도 손실과 유효하지 않은 변환을 방지하므로 일반 CAST보다 더 안전합니다.

구문

accurateCast(x, T)

인수

  • x — 변환할 값. Any
  • T — 대상 데이터 타입의 이름. String

반환 값

대상 데이터 타입으로 변환된 값을 반환합니다. Any

예시

성공적인 변환

SELECT accurateCast(42, 'UInt16')
┌─accurateCast(42, 'UInt16')─┐
│                        42 │
└───────────────────────────┘

문자열을 숫자로 변환

SELECT accurateCast('123.45', 'Float64')
┌─accurateCast('123.45', 'Float64')─┐
│                            123.45 │
└───────────────────────────────────┘

accurateCastOrDefault

도입 버전: v21.1

지정된 데이터 타입으로 값을 변환합니다. accurateCast와 동일하지만, 변환을 정확하게 수행할 수 없는 경우 예외를 발생시키는 대신 기본값을 반환합니다.

두 번째 인수로 기본값을 제공하는 경우 해당 값은 대상 타입이어야 합니다. 기본값을 제공하지 않으면 대상 타입의 기본값이 사용됩니다.

구문

accurateCastOrDefault(x, T[, default_value])

인수

  • x — 변환할 값입니다. Any
  • T — 대상 데이터 타입의 이름입니다. const String
  • default_value — 선택 사항입니다. 변환에 실패했을 때 반환할 기본값입니다. Any

반환 값

대상 데이터 타입으로 변환된 값 또는 변환이 불가능한 경우 기본값을 반환합니다. Any

예시

성공적인 변환

SELECT accurateCastOrDefault(42, 'String')
┌─accurateCastOrDefault(42, 'String')─┐
│ 42                                  │
└─────────────────────────────────────┘

명시적 기본값을 사용하는 변환 실패

SELECT accurateCastOrDefault('abc', 'UInt32', 999::UInt32)
┌─accurateCastOrDefault('abc', 'UInt32', 999)─┐
│                                         999 │
└─────────────────────────────────────────────┘

암시적 기본값으로 인한 변환 실패

SELECT accurateCastOrDefault('abc', 'UInt32')
┌─accurateCastOrDefault('abc', 'UInt32')─┐
│                                      0 │
└────────────────────────────────────────┘

accurateCastOrNull

도입 버전: v1.1

값을 지정된 데이터 타입으로 변환합니다. accurateCast와 유사하지만, 변환을 정확하게 수행할 수 없는 경우 예외를 발생시키는 대신 NULL을 반환합니다.

이 함수는 accurateCast의 안정성과 유연한 오류 처리를 결합합니다.

구문

accurateCastOrNull(x, T)

인수

  • x — 변환할 값입니다. Any
  • T — 대상 데이터 타입의 이름입니다. String

반환 값

대상 데이터 타입으로 변환된 값을 반환하며, 변환이 불가능하면 NULL을 반환합니다. Any

예제

성공적인 변환

SELECT accurateCastOrNull(42, 'String')
┌─accurateCastOrNull(42, 'String')─┐
│ 42                               │
└──────────────────────────────────┘

변환 실패 시 NULL 반환

SELECT accurateCastOrNull('abc', 'UInt32')
┌─accurateCastOrNull('abc', 'UInt32')─┐
│                                ᴺᵁᴸᴸ │
└─────────────────────────────────────┘

formatRow

도입 버전: v20.7

임의의 표현식을 지정된 format을 통해 문자열로 변환합니다.

참고

format에 접두사/접미사가 포함되어 있으면 각 행마다 함께 출력됩니다. 이 함수는 행 기반 format만 지원합니다.

문법

formatRow(format, x, y, ...)

인수

  • format — 텍스트 형식입니다. 예: CSV, TSV. String
  • x, y, ... — 표현식입니다. Any

반환 값

서식이 적용된 문자열입니다. (텍스트 형식의 경우 일반적으로 줄 바꿈 문자로 끝납니다). String

예시

기본 사용법

SELECT formatRow('CSV', number, 'good')
FROM numbers(3)
┌─formatRow('CSV', number, 'good')─┐
│ 0,"good"
                         │
│ 1,"good"
                         │
│ 2,"good"
                         │
└──────────────────────────────────┘

사용자 지정 포맷 사용

SELECT formatRow('CustomSeparated', number, 'good')
FROM numbers(3)
SETTINGS format_custom_result_before_delimiter='<prefix>\n', format_custom_result_after_delimiter='<suffix>'
┌─formatRow('CustomSeparated', number, 'good')─┐
│ <prefix>
0    good
<suffix>                   │
│ <prefix>
1    good
<suffix>                   │
│ <prefix>
2    good
<suffix>                   │
└──────────────────────────────────────────────┘

formatRowNoNewline

도입 버전: v20.7

formatRow와 동일하지만, 각 행의 개행 문자를 제거합니다.

임의의 표현식을 지정된 포맷으로 문자열로 변환하되, 결과에서 뒤에 붙은 개행 문자를 제거합니다.

문법

formatRowNoNewline(format, x, y, ...)

인자

  • format — 텍스트 형식입니다. 예: CSV, TSV. String
  • x, y, ... — 표현식입니다. Any

반환 값

개행 문자가 제거된 서식화된 문자열을 반환합니다. String

예제

기본 사용법

SELECT formatRowNoNewline('CSV', number, 'good')
FROM numbers(3)
┌─formatRowNoNewline('CSV', number, 'good')─┐
│ 0,"good"                                  │
│ 1,"good"                                  │
│ 2,"good"                                  │
└───────────────────────────────────────────┘

fromUnixTimestamp64Micro

도입 버전: v20.5

마이크로초 단위 Unix 타임스탬프를 마이크로초 정밀도의 DateTime64 값으로 변환합니다.

입력값은 마이크로초 정밀도의 Unix 타임스탬프(1970-01-01 00:00:00 UTC 이후 경과한 마이크로초 수)로 간주됩니다.

구문

fromUnixTimestamp64Micro(value[, timezone])

인수

  • value — 마이크로초 단위의 Unix 타임스탬프. Int64
  • timezone — 선택적 인수. 반환 값에 사용할 타임존. String

반환 값

마이크로초 정밀도의 DateTime64 값을 반환합니다. DateTime64(6)

예시

사용 예시

SELECT fromUnixTimestamp64Micro(1640995200123456)
┌─fromUnixTimestamp64Micro(1640995200123456)─┐
│                 2022-01-01 00:00:00.123456 │
└────────────────────────────────────────────┘

fromUnixTimestamp64Milli

도입 버전: v20.5

밀리초 단위의 Unix 타임스탬프를 밀리초 정밀도의 DateTime64 값으로 변환합니다.

입력 값은 1970-01-01 00:00:00 UTC 이후 경과한 밀리초 수를 나타내는, 밀리초 정밀도의 Unix 타임스탬프로 간주됩니다.

구문

fromUnixTimestamp64Milli(value[, timezone])

인수

  • value — 밀리초 단위의 Unix 타임스탬프입니다. Int64
  • timezone — 선택적입니다. 반환 값에 사용할 타임존입니다. String

반환값

밀리초 단위 정밀도를 가지는 DateTime64 값입니다. DateTime64(3)

예시

사용 예시

SELECT fromUnixTimestamp64Milli(1640995200123)
┌─fromUnixTimestamp64Milli(1640995200123)─┐
│                 2022-01-01 00:00:00.123 │
└─────────────────────────────────────────┘

fromUnixTimestamp64Nano

도입 버전: v20.5

나노초 단위 Unix 타임스탬프를 나노초 정밀도의 DateTime64 값으로 변환합니다.

입력 값은 1970-01-01 00:00:00 UTC부터 경과한 나노초 수를 나타내는, 나노초 정밀도의 Unix 타임스탬프로 간주합니다.

참고

입력 값은 입력 값에 포함된 타임존이 아니라 UTC 기준 타임스탬프로 처리된다는 점에 유의하십시오.

구문

fromUnixTimestamp64Nano(value[, timezone])

인수

  • value — 나노초 단위 Unix 타임스탬프. Int64
  • timezone — 선택 사항. 반환 값에 사용할 타임존. String

반환 값

나노초 정밀도의 DateTime64 값을 반환합니다. DateTime64(9)

예시

사용 예시

SELECT fromUnixTimestamp64Nano(1640995200123456789)
┌─fromUnixTimestamp64Nano(1640995200123456789)─┐
│                2022-01-01 00:00:00.123456789 │
└──────────────────────────────────────────────┘

fromUnixTimestamp64Second

도입된 버전: v24.12

초 단위 Unix 타임스탬프를 초 단위 정밀도를 갖는 DateTime64 값으로 변환합니다.

입력값은 초 단위 정밀도(1970-01-01 00:00:00 UTC 이후 경과한 초 수)를 갖는 Unix 타임스탬프로 간주됩니다.

구문

fromUnixTimestamp64Second(value[, timezone])

인자

  • value — 초 단위 Unix 타임스탬프. Int64
  • timezone — 선택 사항입니다. 반환 값에 사용할 타임존. String

반환 값

초 단위 정밀도의 DateTime64 값을 반환합니다. DateTime64(0)

예시

사용 예시

SELECT fromUnixTimestamp64Second(1640995200)
┌─fromUnixTimestamp64Second(1640995200)─┐
│                   2022-01-01 00:00:00 │
└───────────────────────────────────────┘

parseDateTime

도입된 버전: v23.3

MySQL 날짜 형식 문자열에 따라 날짜와 시간 문자열을 파싱합니다.

이 FUNCTION은 formatDateTime의 역연산입니다. String 인자를 형식 지정 String에 따라 파싱합니다. DateTime 데이터 타입을 반환합니다.

구문

parseDateTime(time_string, format[, timezone])

별칭: TO_UNIXTIME

인수

  • time_stringDateTime으로 변환할 문자열입니다. String
  • formattime_string을 어떻게 파싱할지 지정하는 형식 문자열입니다. String
  • timezone — 선택 사항입니다. 시간대입니다. String

반환 값

MySQL 스타일 형식 문자열에 따라 입력 문자열을 파싱하여 얻은 DateTime을 반환합니다. DateTime

예시

사용 예시

SELECT parseDateTime('2025-01-04+23:00:00', '%Y-%m-%d+%H:%i:%s')
┌─parseDateTime('2025-01-04+23:00:00', '%Y-%m-%d+%H:%i:%s')─┐
│                                       2025-01-04 23:00:00 │
└───────────────────────────────────────────────────────────┘

parseDateTime32BestEffort

도입 버전: v20.9

날짜와 시간의 문자열 표현을 DateTime 데이터 타입으로 변환합니다.

이 FUNCTION은 ISO 8601, RFC 1123 - 5.2.14 RFC-822 Date and Time Specification, ClickHouse 고유 형식을 비롯한 여러 날짜 및 시간 형식을 파싱합니다.

구문

parseDateTime32BestEffort(time_string[, time_zone])

인수

  • time_string — 변환할 날짜와 시간이 포함된 문자열입니다. String
  • time_zone — 선택적입니다. time_string을 해석할 때 사용할 시간대입니다. String

반환 값

time_stringDateTime 값으로 반환합니다. DateTime

예시

사용 예시

SELECT parseDateTime32BestEffort('23/10/2025 12:12:57')
AS parseDateTime32BestEffort
┌─parseDateTime32BestEffort─┐
│       2025-10-23 12:12:57 │
└───────────────────────────┘

타임존 포함

SELECT parseDateTime32BestEffort('Sat, 18 Aug 2025 07:22:16 GMT', 'Asia/Istanbul')
AS parseDateTime32BestEffort
┌─parseDateTime32BestEffort─┐
│       2025-08-18 10:22:16 │
└───────────────────────────┘

유닉스 타임스탬프

SELECT parseDateTime32BestEffort('1284101485')
AS parseDateTime32BestEffort
┌─parseDateTime32BestEffort─┐
│       2015-07-07 12:04:41 │
└───────────────────────────┘

parseDateTime32BestEffortOrNull

도입 버전: v20.9

parseDateTime32BestEffort와 동일하지만, 파싱할 수 없는 날짜 형식을 만나면 NULL을 반환합니다.

구문

parseDateTime32BestEffortOrNull(time_string[, time_zone])

인수

  • time_string — 변환할 날짜와 시간이 들어 있는 문자열입니다. String
  • time_zone — 선택적입니다. time_string을 파싱할 때 기준이 되는 시간대입니다. String

반환 값

문자열을 파싱하여 얻은 DateTime 객체를 반환하며, 파싱에 실패하면 NULL을 반환합니다. DateTime

예시

사용 예시

SELECT
    parseDateTime32BestEffortOrNull('23/10/2025 12:12:57') AS valid,
    parseDateTime32BestEffortOrNull('invalid date') AS invalid
┌─valid───────────────┬─invalid─┐
│ 2025-10-23 12:12:57 │    ᴺᵁᴸᴸ │
└─────────────────────┴─────────┘

parseDateTime32BestEffortOrZero

도입된 버전: v20.9

parseDateTime32BestEffort와 동일하지만, 처리할 수 없는 날짜 형식을 만나면 0 값의 날짜 또는 0 값의 날짜-시간을 반환합니다.

구문

parseDateTime32BestEffortOrZero(time_string[, time_zone])

인자

  • time_string — 변환할 날짜와 시간을 포함하는 문자열입니다. String
  • time_zone — 선택 사항입니다. time_string을 파싱할 때 기준이 되는 시간대입니다. String

반환 값

문자열을 파싱하여 얻은 DateTime 값을 반환하며, 파싱에 실패하면 zero date인 1970-01-01 00:00:00을 반환합니다. DateTime

예시

사용 예시

SELECT
    parseDateTime32BestEffortOrZero('23/10/2025 12:12:57') AS valid,
    parseDateTime32BestEffortOrZero('invalid date') AS invalid
┌─valid───────────────┬─invalid─────────────┐
│ 2025-10-23 12:12:57 │ 1970-01-01 00:00:00 │
└─────────────────────┴─────────────────────┘

parseDateTime64

도입된 버전: v24.11

MySQL 날짜 형식 문자열을 사용하여, 초 단위 미만의 정밀도로 날짜와 시간 문자열을 파싱합니다.

이 함수는 DateTime64에 대해 formatDateTime의 역함수입니다. String 인자를 형식 지정 String을 사용해 파싱합니다. 1900년부터 2299년까지의 날짜를 초 단위 미만 정밀도로 표현할 수 있는 DateTime64 타입을 반환합니다.

문법

parseDateTime64(time_string, format[, timezone])

인수

  • time_stringDateTime64로 파싱할 문자열. String
  • formattime_string을 파싱하는 방법을 지정하는 포맷 문자열. String
  • timezone — 옵션. 타임존. String

반환 값

MySQL 스타일 포맷 문자열을 기준으로 입력 문자열을 파싱해 얻은 DateTime64 값을 반환합니다. DateTime64

예시

사용 예시

SELECT parseDateTime64('2025-01-04 23:00:00.123', '%Y-%m-%d %H:%i:%s.%f')
┌─parseDateTime64('2025-01-04 23:00:00.123', '%Y-%m-%d %H:%i:%s.%f')─┐
│                                       2025-01-04 23:00:00.123       │
└─────────────────────────────────────────────────────────────────────┘

parseDateTime64BestEffort

도입 버전: v20.1

parseDateTimeBestEffort FUNCTION과 동일하지만 밀리초 및 마이크로초까지 파싱하며 DateTime64 데이터 타입을 반환합니다.

문법

parseDateTime64BestEffort(time_string[, precision[, time_zone]])

인수

  • time_string — 변환할 날짜 또는 날짜와 시간이 포함된 문자열입니다. String
  • precision — 선택 사항입니다. 필요한 정밀도입니다. 밀리초는 3, 마이크로초는 6입니다. 기본값: 3. UInt8
  • time_zone — 선택 사항입니다. 시간대입니다. 함수는 이 매개변수로 지정된 시간대를 기준으로 time_string을 파싱합니다. String

반환 값

DateTime64 데이터 타입으로 변환된 time_string을 반환합니다. DateTime64

예시

사용 예시

SELECT parseDateTime64BestEffort('2025-01-01') AS a, toTypeName(a) AS t
UNION ALL
SELECT parseDateTime64BestEffort('2025-01-01 01:01:00.12346') AS a, toTypeName(a) AS t
UNION ALL
SELECT parseDateTime64BestEffort('2025-01-01 01:01:00.12346',6) AS a, toTypeName(a) AS t
UNION ALL
SELECT parseDateTime64BestEffort('2025-01-01 01:01:00.12346',3,'Asia/Istanbul') AS a, toTypeName(a) AS t
FORMAT PrettyCompactMonoBlock
┌──────────────────────────a─┬─t──────────────────────────────┐
│ 2025-01-01 01:01:00.123000 │ DateTime64(3)                  │
│ 2025-01-01 00:00:00.000000 │ DateTime64(3)                  │
│ 2025-01-01 01:01:00.123460 │ DateTime64(6)                  │
│ 2025-12-31 22:01:00.123000 │ DateTime64(3, 'Asia/Istanbul') │
└────────────────────────────┴────────────────────────────────┘

parseDateTime64BestEffortOrNull

도입 버전: v20.1

parseDateTime64BestEffort와 동일하지만, 처리할 수 없는 날짜 형식을 만나면 NULL을 반환합니다.

구문

parseDateTime64BestEffortOrNull(time_string[, precision[, time_zone]])

인수

  • time_string — 변환할 날짜 또는 날짜와 시간이 포함된 문자열입니다. String
  • precision — 선택 사항입니다. 필요한 정밀도입니다. 밀리초는 3, 마이크로초는 6입니다. 기본값: 3. UInt8
  • time_zone — 선택 사항입니다. 시간대를 지정합니다. 함수는 해당 시간대에 따라 time_string을 파싱합니다. String

반환 값

time_stringDateTime64로 변환하여 반환하거나, 입력을 파싱하지 못하면 NULL을 반환합니다. DateTime64 또는 NULL

예시

사용 예시

SELECT parseDateTime64BestEffortOrNull('2025-01-01 01:01:00.123') AS valid,
       parseDateTime64BestEffortOrNull('invalid') AS invalid
┌─valid───────────────────┬─invalid─┐
│ 2025-01-01 01:01:00.123 │    ᴺᵁᴸᴸ │
└─────────────────────────┴─────────┘

parseDateTime64BestEffortOrZero

도입: v20.1

parseDateTime64BestEffort와 동일하지만, 처리할 수 없는 형식의 날짜를 만나면 날짜 0 값 또는 날짜-시간 0 값을 반환합니다.

구문

parseDateTime64BestEffortOrZero(time_string[, precision[, time_zone]])

인수

  • time_string — 변환할 날짜 또는 날짜와 시간이 포함된 문자열입니다. String
  • precision — 선택 사항입니다. 요구되는 정밀도입니다. 밀리초는 3, 마이크로초는 6입니다. 기본값: 3. UInt8
  • time_zone — 선택 사항입니다. 시간대입니다. 함수는 이 시간대를 기준으로 time_string을 파싱합니다. String

반환 값

DateTime64로 변환된 time_string을 반환하며, 입력을 파싱할 수 없는 경우 영(0) 날짜/시간 값(1970-01-01 00:00:00.000)을 반환합니다. DateTime64

예시

사용 예시

SELECT parseDateTime64BestEffortOrZero('2025-01-01 01:01:00.123') AS valid,
       parseDateTime64BestEffortOrZero('invalid') AS invalid
┌─valid───────────────────┬─invalid─────────────────┐
│ 2025-01-01 01:01:00.123 │ 1970-01-01 00:00:00.000 │
└─────────────────────────┴─────────────────────────┘

parseDateTime64BestEffortUS

도입 버전: v22.8

parseDateTime64BestEffort와 동일하지만, 모호한 경우 미국식 날짜 형식(MM/DD/YYYY 등)으로 우선적으로 해석합니다.

구문

parseDateTime64BestEffortUS(time_string [, precision [, time_zone]])

인수

  • time_string — 변환할 날짜 또는 날짜와 시간이 포함된 문자열입니다. String
  • precision — 선택 사항입니다. 필요한 정밀도입니다. 밀리초는 3, 마이크로초는 6입니다. 기본값: 3. UInt8
  • time_zone — 선택 사항입니다. 시간대입니다. 이 함수는 해당 시간대를 기준으로 time_string을 파싱합니다. String

반환 값

모호한 경우 미국식 날짜 형식 선호 규칙을 사용하여 time_stringDateTime64로 변환한 값을 반환합니다. DateTime64

예시

사용 예시

SELECT parseDateTime64BestEffortUS('02/10/2025 12:30:45.123') AS us_format,
       parseDateTime64BestEffortUS('15/08/2025 10:15:30.456') AS fallback_to_standard
┌─us_format───────────────┬─fallback_to_standard────┐
│ 2025-02-10 12:30:45.123 │ 2025-08-15 10:15:30.456 │
└─────────────────────────┴─────────────────────────┘

parseDateTime64BestEffortUSOrNull

도입 버전: v22.8

parseDateTime64BestEffort와 동일하지만, 모호한 경우 US 날짜 형식(MM/DD/YYYY 등)을 우선적으로 사용하고, 처리할 수 없는 날짜 형식을 만나면 NULL을 반환합니다.

구문

parseDateTime64BestEffortUSOrNull(time_string[, precision[, time_zone]])

인수

  • time_string — 변환할 날짜 또는 날짜와 시간이 포함된 문자열입니다. String
  • precision — 선택 사항. 필요한 정밀도입니다. 밀리초는 3, 마이크로초는 6입니다. 기본값: 3. UInt8
  • time_zone — 선택 사항. 시간대입니다. 함수는 이 시간대를 기준으로 time_string을 해석합니다. String

반환 값

미국 형식 우선 규칙에 따라 time_stringDateTime64로 변환한 값을 반환하며, 입력을 해석할 수 없는 경우 NULL을 반환합니다. DateTime64 또는 NULL

예시

사용 예시

SELECT parseDateTime64BestEffortUSOrNull('02/10/2025 12:30:45.123') AS valid_us,
       parseDateTime64BestEffortUSOrNull('invalid') AS invalid
┌─valid_us────────────────┬─invalid─┐
│ 2025-02-10 12:30:45.123 │    ᴺᵁᴸᴸ │
└─────────────────────────┴─────────┘

parseDateTime64BestEffortUSOrZero

도입 버전: v22.8

parseDateTime64BestEffort와 동일하지만, 모호한 경우 미국식 날짜 형식(MM/DD/YYYY 등)을 우선적으로 사용하고, 처리할 수 없는 날짜 형식을 만나면 0 날짜 또는 0 날짜‑시간 값을 반환합니다.

문법

parseDateTime64BestEffortUSOrZero(time_string [, precision [, time_zone]])

인수

  • time_string — 변환할 날짜 또는 날짜·시간이 포함된 문자열입니다. String
  • precision — 선택 사항입니다. 필요한 정밀도입니다. 밀리초는 3, 마이크로초는 6입니다. 기본값: 3. UInt8
  • time_zone — 선택 사항입니다. 시간대입니다. 이 함수는 해당 시간대에 따라 time_string을 파싱합니다. String

반환 값

미국식 형식을 기준으로 DateTime64로 변환된 time_string을 반환하며, 입력을 파싱할 수 없는 경우 0 날짜/일시값(1970-01-01 00:00:00.000)을 반환합니다. DateTime64

예시

사용 예시

SELECT parseDateTime64BestEffortUSOrZero('02/10/2025 12:30:45.123') AS valid_us,
       parseDateTime64BestEffortUSOrZero('invalid') AS invalid
┌─valid_us────────────────┬─invalid─────────────────┐
│ 2025-02-10 12:30:45.123 │ 1970-01-01 00:00:00.000 │
└─────────────────────────┴─────────────────────────┘

parseDateTime64InJodaSyntax

도입 버전: v24.10

Joda 날짜 형식 문자열에 따라 초 단위 이하 정밀도를 포함한 날짜와 시간 문자열을 파싱합니다.

이 FUNCTION은 DateTime64에 대해 formatDateTimeInJodaSyntax의 역함수입니다. Joda 스타일 형식 문자열을 사용하여 String 인자를 파싱합니다. 1900년부터 2299년까지의 날짜를 초 단위 이하 정밀도로 표현할 수 있는 DateTime64 타입을 반환합니다.

형식 패턴은 Joda Time 문서를 참조하십시오.

Syntax

parseDateTime64InJodaSyntax(time_string, format[, timezone])

인자

  • time_stringDateTime64로 파싱할 문자열입니다. String
  • formattime_string을 어떻게 파싱할지 지정하는 Joda 구문(Joda syntax)의 형식 문자열입니다. String
  • timezone — 선택 사항입니다. 타임존입니다. String

반환 값

입력 문자열을 Joda 스타일 형식 문자열에 따라 파싱한 DateTime64 값을 반환합니다. DateTime64

예시

사용 예시

SELECT parseDateTime64InJodaSyntax('2025-01-04 23:00:00.123', 'yyyy-MM-dd HH:mm:ss.SSS')
┌─parseDateTime64InJodaSyntax('2025-01-04 23:00:00.123', 'yyyy-MM-dd HH:mm:ss.SSS')─┐
│                                                          2025-01-04 23:00:00.123   │
└────────────────────────────────────────────────────────────────────────────────────┘

parseDateTime64InJodaSyntaxOrNull

도입된 버전: v24.10

parseDateTime64InJodaSyntax와 동일하지만, 구문 분석할 수 없는 날짜 형식을 만나면 NULL을 반환합니다.

구문

parseDateTime64InJodaSyntaxOrNull(time_string, format[, timezone])

인수

  • time_string — DateTime64로 파싱할 문자열입니다. String
  • formattime_string을(를) 어떻게 파싱할지 지정하는 Joda 구문 형식 문자열입니다. String
  • timezone — 선택 사항입니다. 타임존을 나타냅니다. String

반환 값

입력 문자열을 파싱해 얻은 DateTime64를 반환하며, 파싱에 실패하면 NULL을 반환합니다. Nullable(DateTime64)

예시

사용 예시

SELECT parseDateTime64InJodaSyntaxOrNull('2025-01-04 23:00:00.123', 'yyyy-MM-dd HH:mm:ss.SSS')
┌─parseDateTime64InJodaSyntaxOrNull('2025-01-04 23:00:00.123', 'yyyy-MM-dd HH:mm:ss.SSS')─┐
│                                                             2025-01-04 23:00:00.123      │
└──────────────────────────────────────────────────────────────────────────────────────────┘

parseDateTime64InJodaSyntaxOrZero

도입 버전: v24.10

parseDateTime64InJodaSyntax와 동일하지만, 구문 분석할 수 없는 날짜 형식을 만나면 0 날짜(Zero date)를 반환합니다.

구문

parseDateTime64InJodaSyntaxOrZero(time_string, format[, timezone])

인수

  • time_stringDateTime64로 파싱할 문자열입니다. String
  • formattime_string을 파싱하는 방법을 지정하는 Joda 문법의 포맷 문자열입니다. String
  • timezone — 선택 사항입니다. 타임존입니다. String

반환 값

입력 문자열에서 파싱한 DateTime64 값을 반환하며, 파싱에 실패하면 0인 DateTime64 값을 반환합니다. DateTime64

예시

사용 예시

SELECT parseDateTime64InJodaSyntaxOrZero('2025-01-04 23:00:00.123', 'yyyy-MM-dd HH:mm:ss.SSS')
┌─parseDateTime64InJodaSyntaxOrZero('2025-01-04 23:00:00.123', 'yyyy-MM-dd HH:mm:ss.SSS')─┐
│                                                              2025-01-04 23:00:00.123     │
└──────────────────────────────────────────────────────────────────────────────────────────┘

parseDateTime64OrNull

도입 버전: v24.11

parseDateTime64와 동일하지만, 구문 분석할 수 없는 날짜 형식을 만나면 NULL을 반환합니다.

구문

parseDateTime64OrNull(time_string, format[, timezone])

인수

  • time_stringDateTime64로 파싱할 문자열입니다. String
  • formattime_string을 어떻게 파싱할지 지정하는 형식 문자열입니다. String
  • timezone — 선택 사항인 시간대입니다. String

반환 값

입력 문자열을 파싱한 DateTime64를 반환하며, 파싱에 실패하면 NULL을 반환합니다. Nullable(DateTime64)

예시

사용 예시

SELECT parseDateTime64OrNull('2025-01-04 23:00:00.123', '%Y-%m-%d %H:%i:%s.%f')
┌─parseDateTime64OrNull('2025-01-04 23:00:00.123', '%Y-%m-%d %H:%i:%s.%f')─┐
│                                            2025-01-04 23:00:00.123        │
└───────────────────────────────────────────────────────────────────────────┘

parseDateTime64OrZero

도입 버전: v24.11

parseDateTime64와 동일하지만, 파싱할 수 없는 날짜 형식을 만나면 0값 날짜를 반환합니다.

구문

parseDateTime64OrZero(time_string, format[, timezone])

인자

  • time_stringDateTime64로 파싱할 문자열입니다. String
  • formattime_string을 어떻게 파싱할지 지정하는 형식 문자열입니다. String
  • timezone — 선택 사항입니다. 타임존입니다. String

반환 값

입력 문자열에서 파싱한 DateTime64 값을 반환하며, 파싱에 실패하면 0인 DateTime64 값을 반환합니다. DateTime64

예시

사용 예시

SELECT parseDateTime64OrZero('2025-01-04 23:00:00.123', '%Y-%m-%d %H:%i:%s.%f')
┌─parseDateTime64OrZero('2025-01-04 23:00:00.123', '%Y-%m-%d %H:%i:%s.%f')─┐
│                                             2025-01-04 23:00:00.123       │
└───────────────────────────────────────────────────────────────────────────┘

parseDateTimeBestEffort

도입된 버전: v1.1

String 형식으로 표현된 날짜와 시간을 DateTime 데이터 타입으로 변환합니다. 이 함수는 ISO 8601, RFC 1123 - 5.2.14 RFC-822 날짜 및 시간 명세, ClickHouse 고유 형식 및 기타 여러 날짜/시간 형식을 파싱합니다.

지원되는 비표준 형식:

  • 9~10자리 UNIX 타임스탬프가 포함된 문자열.
  • 날짜와 시간 구성 요소를 포함하는 문자열: YYYYMMDDhhmmss, DD/MM/YYYY hh:mm:ss, DD-MM-YY hh:mm, YYYY-MM-DD hh:mm:ss 등.
  • 날짜만 있고 시간 구성 요소가 없는 문자열: YYYY, YYYYMM, YYYY*MM, DD/MM/YYYY, DD-MM-YY 등.
  • 일(day)과 시간을 포함하는 문자열: DD, DD hh, DD hh:mm. 이 경우 MM01로 대체됩니다.
  • 날짜와 시간에 더해 시간대 오프셋 정보가 포함된 문자열: YYYY-MM-DD hh:mm:ss ±h:mm 등.
  • syslog 타임스탬프 형식의 문자열: Mmm dd hh:mm:ss. 예: Jun 9 14:20:32.

구분자가 있는 모든 형식에 대해 이 함수는 월 이름이 전체 이름이거나 월 이름의 앞 세 글자로 표현된 경우를 모두 파싱합니다. 연도가 명시되지 않은 경우 현재 연도로 간주합니다.

문법

parseDateTimeBestEffort(time_string[, time_zone])

인수

  • time_string — 변환할 날짜와 시간이 포함된 문자열입니다. String
  • time_zone — 선택 사항입니다. time_string을 파싱할 때 기준이 되는 시간대입니다. String

반환 값

time_stringDateTime으로 변환하여 반환합니다. DateTime

예시

사용 예시

SELECT parseDateTimeBestEffort('23/10/2025 12:12:57') AS parseDateTimeBestEffort
┌─parseDateTimeBestEffort─┐
│     2025-10-23 12:12:57 │
└─────────────────────────┘

타임존 포함

SELECT parseDateTimeBestEffort('Sat, 18 Aug 2025 07:22:16 GMT', 'Asia/Istanbul') AS parseDateTimeBestEffort
┌─parseDateTimeBestEffort─┐
│     2025-08-18 10:22:16 │
└─────────────────────────┘

유닉스 타임스탬프

SELECT parseDateTimeBestEffort('1735689600') AS parseDateTimeBestEffort
┌─parseDateTimeBestEffort─┐
│     2025-01-01 00:00:00 │
└─────────────────────────┘

parseDateTimeBestEffortOrNull

도입 버전: v1.1

parseDateTimeBestEffort와 동일하지만, 처리할 수 없는 날짜 형식을 만나면 NULL을 반환합니다. 이 함수는 ISO 8601, RFC 1123 - 5.2.14 RFC-822 Date and Time Specification, ClickHouse 고유 형식 및 기타 일부 날짜와 시간 형식을 파싱합니다.

지원되는 비표준 형식:

  • 9~10자리 Unix 타임스탬프가 포함된 문자열.
  • 날짜와 시간 구성 요소를 모두 포함하는 문자열: YYYYMMDDhhmmss, DD/MM/YYYY hh:mm:ss, DD-MM-YY hh:mm, YYYY-MM-DD hh:mm:ss 등.
  • 날짜만 있고 시간 구성 요소가 없는 문자열: YYYY, YYYYMM, YYYY*MM, DD/MM/YYYY, DD-MM-YY 등.
  • 일(day)과 시간만 포함하는 문자열: DD, DD hh, DD hh:mm. 이 경우 MM01로 대체됩니다.
  • 날짜와 시간에 더해 시간대 오프셋 정보까지 포함하는 문자열: YYYY-MM-DD hh:mm:ss ±h:mm 등.
  • syslog 타임스탬프: Mmm dd hh:mm:ss. 예: Jun 9 14:20:32.

구분자가 있는 모든 형식의 경우, 함수는 월 이름을 전체 이름 또는 앞 세 글자로 표기한 경우 모두 파싱합니다. 연도가 지정되지 않은 경우 현재 연도와 동일한 값으로 간주합니다.

구문

parseDateTimeBestEffortOrNull(time_string[, time_zone])

인수

  • time_string — 변환할 날짜와 시간이 들어 있는 문자열입니다. String
  • time_zone — 선택 사항입니다. time_string을 파싱할 때 기준으로 사용하는 시간대입니다. String

반환 값

time_string을 DateTime으로 변환한 값을 반환하며, 입력을 파싱할 수 없으면 NULL을 반환합니다. DateTime 또는 NULL

예시

사용 예시

SELECT parseDateTimeBestEffortOrNull('23/10/2025 12:12:57') AS valid,
       parseDateTimeBestEffortOrNull('invalid') AS invalid
┌─valid───────────────┬─invalid─┐
│ 2025-10-23 12:12:57 │    ᴺᵁᴸᴸ │
└─────────────────────┴─────────┘

parseDateTimeBestEffortOrZero

도입된 버전: v1.1

parseDateTimeBestEffort와 동일하지만, 처리할 수 없는 날짜 형식을 만나면 0 날짜 또는 0 날짜-시간을 반환합니다. 이 함수는 ISO 8601, RFC 1123 - 5.2.14 RFC-822 Date and Time Specification, ClickHouse 고유 형식 및 기타 일부 날짜 및 시간 형식을 파싱합니다.

지원되는 비표준 형식:

  • 9~10자리 유닉스 타임스탬프를 포함하는 문자열.
  • 날짜와 시간 구성 요소를 포함하는 문자열: YYYYMMDDhhmmss, DD/MM/YYYY hh:mm:ss, DD-MM-YY hh:mm, YYYY-MM-DD hh:mm:ss 등.
  • 날짜는 있으나 시간 구성 요소가 없는 문자열: YYYY, YYYYMM, YYYY*MM, DD/MM/YYYY, DD-MM-YY 등.
  • 일(day)과 시간만 있는 문자열: DD, DD hh, DD hh:mm. 이 경우 MM01로 대체됩니다.
  • 날짜와 시간에 더해 시간대 오프셋 정보가 포함된 문자열: YYYY-MM-DD hh:mm:ss ±h:mm 등.
  • syslog 타임스탬프: Mmm dd hh:mm:ss. 예: Jun 9 14:20:32.

구분자가 있는 모든 형식에 대해, 이 함수는 월 이름을 전체 이름 또는 월 이름의 처음 세 글자로 표현한 경우를 모두 파싱합니다. 연도가 지정되지 않은 경우, 현재 연도로 간주합니다.

구문

parseDateTimeBestEffortOrZero(time_string[, time_zone])

인자

  • time_string — 변환할 날짜와 시간이 포함된 문자열입니다. String
  • time_zone — 선택 사항입니다. time_string을 파싱할 때 사용할 시간대를 나타냅니다. String

반환 값

입력 값을 파싱할 수 있으면 time_stringDateTime으로 반환하고, 파싱할 수 없으면 0 날짜/DateTime 값( 1970-01-01 또는 1970-01-01 00:00:00)을 반환합니다. DateTime

예시

사용 예시

SELECT parseDateTimeBestEffortOrZero('23/10/2025 12:12:57') AS valid,
       parseDateTimeBestEffortOrZero('invalid') AS invalid
┌─valid───────────────┬─invalid─────────────┐
│ 2025-10-23 12:12:57 │ 1970-01-01 00:00:00 │
└─────────────────────┴─────────────────────┘

parseDateTimeBestEffortUS

도입 버전: v1.1

이 FUNCTION은 ISO 날짜 형식(예: YYYY-MM-DD hh:mm:ss)과 월(month)과 일(day) 구성 요소를 모호하지 않게 추출할 수 있는 다른 날짜 형식(예: YYYYMMDDhhmmss, YYYY-MM, DD hh, YYYY-MM-DD hh:mm:ss ±h:mm)에 대해서는 parseDateTimeBestEffort와 동일하게 동작합니다. 월과 일 구성 요소를 모호하지 않게 추출할 수 없는 경우(예: MM/DD/YYYY, MM-DD-YYYY, MM-DD-YY)에는 DD/MM/YYYY, DD-MM-YYYY, DD-MM-YY 대신 미국식 날짜 형식으로 우선 해석합니다. 단, 앞의 설명에 대한 예외로, 월 값이 12보다 크고 31 이하인 경우에는 이 FUNCTION이 parseDateTimeBestEffort의 동작을 따릅니다. 예를 들어 15/08/20202020-08-15로 파싱됩니다.

구문

parseDateTimeBestEffortUS(time_string[, time_zone])

인수

  • time_string — 변환할 날짜와 시간이 포함된 문자열입니다. String
  • time_zone — 선택 사항입니다. time_string을 파싱할 때 사용할 시간대입니다. String

반환 값

모호한 경우 미국식 날짜 형식 선호 규칙을 사용하여 time_stringDateTime으로 반환합니다. DateTime

예시

사용 예시

SELECT parseDateTimeBestEffortUS('02/10/2025') AS us_format,
       parseDateTimeBestEffortUS('15/08/2025') AS fallback_to_standard
┌─us_format───────────┬─fallback_to_standard─┐
│ 2025-02-10 00:00:00 │  2025-08-15 00:00:00 │
└─────────────────────┴──────────────────────┘

parseDateTimeBestEffortUSOrNull

도입 버전: v1.1

parseDateTimeBestEffortUS FUNCTION과 동일하지만, 처리할 수 없는 날짜 형식을 발견하면 NULL을 반환합니다.

이 FUNCTION은 ISO 날짜 형식에 대해서는 parseDateTimeBestEffort와 동일하게 동작하지만, 애매할 때는 미국식 날짜 형식을 우선하며, 파싱 오류가 발생하면 NULL을 반환합니다.

문법

parseDateTimeBestEffortUSOrNull(time_string[, time_zone])

인자

  • time_string — 변환할 날짜와 시간이 포함된 문자열입니다. String
  • time_zone — 선택 사항입니다. time_string을 해석할 때 사용할 시간대입니다. String

반환 값

미국식 형식을 우선 적용하여 time_stringDateTime으로 변환해 반환하거나, 입력을 파싱할 수 없는 경우 NULL을 반환합니다. DateTime 또는 NULL

예시

사용 예시

SELECT parseDateTimeBestEffortUSOrNull('02/10/2025') AS valid_us,
       parseDateTimeBestEffortUSOrNull('invalid') AS invalid
┌─valid_us────────────┬─invalid─┐
│ 2025-02-10 00:00:00 │    ᴺᵁᴸᴸ │
└─────────────────────┴─────────┘

parseDateTimeBestEffortUSOrZero

도입된 버전: v1.1

parseDateTimeBestEffortUS 함수와 동일하지만, 처리할 수 없는 날짜 형식을 만나면 0 날짜(1970-01-01) 또는 시간까지 포함한 0 날짜(1970-01-01 00:00:00)를 반환합니다.

이 함수는 ISO 날짜 형식에 대해서는 parseDateTimeBestEffort와 동일하게 동작하지만, 모호한 경우에는 US 날짜 형식을 우선하며, 파싱 오류 발생 시 0 값을 반환합니다.

구문

parseDateTimeBestEffortUSOrZero(time_string[, time_zone])

인수

  • time_string — 변환할 날짜와 시간이 포함된 문자열입니다. String
  • time_zone — 선택 사항. time_string을 해석할 때 사용할 시간대입니다. String

반환 값

미국식 형식을 우선적으로 사용하여 time_stringDateTime으로 변환해 반환하며, 입력을 파싱할 수 없는 경우 0값 날짜/DateTime(1970-01-01 또는 1970-01-01 00:00:00)을 반환합니다. DateTime

예시

사용 예시

SELECT parseDateTimeBestEffortUSOrZero('02/10/2025') AS valid_us,
       parseDateTimeBestEffortUSOrZero('invalid') AS invalid
┌─valid_us────────────┬─invalid─────────────┐
│ 2025-02-10 00:00:00 │ 1970-01-01 00:00:00 │
└─────────────────────┴─────────────────────┘

parseDateTimeInJodaSyntax

도입: v23.3

Joda 날짜 형식 문자열을 사용하여 날짜 및 시간 문자열을 구문 분석합니다.

이 함수는 formatDateTimeInJodaSyntax의 역함수입니다. Joda 스타일의 형식 String을 사용하여 String 인수를 구문 분석합니다. DateTime 타입을 반환합니다.

형식 패턴에 대해서는 Joda Time 문서를 참조하십시오.

구문

parseDateTimeInJodaSyntax(time_string, format[, timezone])

인수

  • time_stringDateTime으로 파싱할 문자열입니다. String
  • formattime_string을 어떻게 파싱할지 지정하는 Joda 문법의 포맷 문자열입니다. String
  • timezone — 선택 사항입니다. 시간대를 나타냅니다. String

반환 값

Joda 스타일 포맷 문자열에 따라 입력 문자열을 파싱한 DateTime을 반환합니다. DateTime

예시

사용 예시

SELECT parseDateTimeInJodaSyntax('2025-01-04 23:00:00', 'yyyy-MM-dd HH:mm:ss')
┌─parseDateTimeInJodaSyntax('2025-01-04 23:00:00', 'yyyy-MM-dd HH:mm:ss')─┐
│                                                      2025-01-04 23:00:00 │
└──────────────────────────────────────────────────────────────────────────┘

parseDateTimeInJodaSyntaxOrNull

도입 버전: v23.3

parseDateTimeInJodaSyntax와 동일하지만, 해석할 수 없는 날짜 형식을 만나면 NULL을 반환합니다.

구문

parseDateTimeInJodaSyntaxOrNull(time_string, format[, timezone])

인수

  • time_stringDateTime 형식으로 파싱할 문자열입니다. String
  • formattime_string을 어떻게 파싱할지 지정하는 Joda 구문을 사용하는 형식 문자열입니다. String
  • timezone — 선택 사항입니다. 시간대입니다. String

반환 값

입력 문자열을 파싱하여 얻은 DateTime을 반환하며, 파싱에 실패하면 NULL을 반환합니다. Nullable(DateTime)

예시

사용 예시

SELECT parseDateTimeInJodaSyntaxOrNull('2025-01-04 23:00:00', 'yyyy-MM-dd HH:mm:ss')
┌─parseDateTimeInJodaSyntaxOrNull('2025-01-04 23:00:00', 'yyyy-MM-dd HH:mm:ss')─┐
│                                                         2025-01-04 23:00:00    │
└────────────────────────────────────────────────────────────────────────────────┘

parseDateTimeInJodaSyntaxOrZero

도입 버전: v23.3

parseDateTimeInJodaSyntax와 동일하지만, 파싱할 수 없는 날짜 형식을 만나면 0 날짜 값을 반환합니다.

구문

parseDateTimeInJodaSyntaxOrZero(time_string, format[, timezone])

인자

  • time_stringDateTime으로 파싱할 문자열입니다. String
  • formattime_string을 어떻게 파싱할지 지정하는 Joda 구문을 사용하는 형식 문자열입니다. String
  • timezone — 선택 사항입니다. 타임존을 나타냅니다. String

반환 값

입력 문자열에서 파싱한 DateTime을 반환하며, 파싱에 실패하면 DateTime 값 0을 반환합니다. DateTime

예시

사용 예시

SELECT parseDateTimeInJodaSyntaxOrZero('2025-01-04 23:00:00', 'yyyy-MM-dd HH:mm:ss')
┌─parseDateTimeInJodaSyntaxOrZero('2025-01-04 23:00:00', 'yyyy-MM-dd HH:mm:ss')─┐
│                                                          2025-01-04 23:00:00   │
└────────────────────────────────────────────────────────────────────────────────┘

parseDateTimeOrNull

도입 버전: v23.3

parseDateTime와 동일하지만, 해석할 수 없는 날짜 형식을 만나면 NULL을 반환합니다.

구문

parseDateTimeOrNull(time_string, format[, timezone])

별칭: str_to_date

인수

  • time_stringDateTime으로 파싱할 문자열입니다. String
  • formattime_string을 어떻게 파싱할지 지정하는 형식 문자열입니다. String
  • timezone — 선택 사항인 시간대입니다. String

반환 값

입력 문자열을 DateTime으로 파싱한 값을 반환하며, 파싱에 실패하면 NULL을 반환합니다. Nullable(DateTime)

예시

사용 예시

SELECT parseDateTimeOrNull('2025-01-04+23:00:00', '%Y-%m-%d+%H:%i:%s')
┌─parseDateTimeOrNull('2025-01-04+23:00:00', '%Y-%m-%d+%H:%i:%s')─┐
│                                            2025-01-04 23:00:00  │
└─────────────────────────────────────────────────────────────────┘

parseDateTimeOrZero

도입 버전: v23.3

parseDateTime와 동일하지만, 파싱할 수 없는 날짜 형식을 만나면 0 값의 날짜를 반환합니다.

구문

parseDateTimeOrZero(time_string, format[, timezone])

인수

  • time_stringDateTime으로 파싱할 문자열입니다. String
  • formattime_string을 파싱하는 방식을 지정하는 포맷 문자열입니다. String
  • timezone — 선택 사항입니다. 타임존입니다. String

반환 값

입력 문자열에서 파싱한 DateTime을 반환하며, 파싱에 실패한 경우 0으로 초기화된 DateTime을 반환합니다. DateTime

예시

사용 예시

SELECT parseDateTimeOrZero('2025-01-04+23:00:00', '%Y-%m-%d+%H:%i:%s')
┌─parseDateTimeOrZero('2025-01-04+23:00:00', '%Y-%m-%d+%H:%i:%s')─┐
│                                             2025-01-04 23:00:00 │
└─────────────────────────────────────────────────────────────────┘

reinterpret

도입 버전: v1.1

입력 값 x의 원본 메모리 내 바이트 시퀀스를 그대로 사용하고, 이를 대상 타입으로 재해석합니다.

구문

reinterpret(x, type)

인수

  • x — 임의의 타입. Any
  • type — 대상 타입. 배열인 경우 배열 요소 타입은 고정 길이 타입이어야 합니다. String

반환 값

대상 타입의 값입니다. Any

예시

사용 예시

SELECT reinterpret(toInt8(-1), 'UInt8') AS int_to_uint,
    reinterpret(toInt8(1), 'Float32') AS int_to_float,
    reinterpret('1', 'UInt32') AS string_to_int
┌─int_to_uint─┬─int_to_float─┬─string_to_int─┐
│         255 │        1e-45 │            49 │
└─────────────┴──────────────┴───────────────┘

Array 예제

SELECT reinterpret(x'3108b4403108d4403108b4403108d440', 'Array(Float32)') AS string_to_array_of_Float32
┌─string_to_array_of_Float32─┐
│ [5.626,6.626,5.626,6.626]  │
└────────────────────────────┘

reinterpretAsDate

도입 버전: v1.1

입력 값을 Date 값으로 재해석합니다(리틀 엔디언 순서를 가정). 이 값은 Unix epoch 시작일인 1970-01-01 이후 경과한 일 수를 나타냅니다.

구문

reinterpretAsDate(x)

인수

반환 값

날짜. Date

예시

사용 예시

SELECT reinterpretAsDate(65), reinterpretAsDate('A')
┌─reinterpretAsDate(65)─┬─reinterpretAsDate('A')─┐
│            1970-03-07 │             1970-03-07 │
└───────────────────────┴────────────────────────┘

reinterpretAsDateTime

도입 버전: v1.1

입력 값을 DateTime 값으로(리틀 엔디언 순서를 가정하여) 재해석하며, 이는 Unix epoch의 시작인 1970-01-01 이후 경과한 일 수를 나타냅니다.

구문

reinterpretAsDateTime(x)

인수

반환값

날짜와 시간. DateTime

예제

사용 예제

SELECT reinterpretAsDateTime(65), reinterpretAsDateTime('A')
┌─reinterpretAsDateTime(65)─┬─reinterpretAsDateTime('A')─┐
│       1970-01-01 01:01:05 │        1970-01-01 01:01:05 │
└───────────────────────────┴────────────────────────────┘

reinterpretAsFixedString

도입 버전: v1.1

입력값을 고정 길이 문자열로 재해석합니다(little endian 순서를 가정합니다). 마지막에 오는 널 바이트(null byte)는 무시됩니다. 예를 들어, UInt32 값 255에 대해 이 함수는 한 글자로 이루어진 문자열을 반환합니다.

구문

reinterpretAsFixedString(x)

인수

반환 값

x를 나타내는 바이트를 포함하는 고정 길이 문자열 값입니다. FixedString

예시

사용 예시

SELECT
    reinterpretAsFixedString(toDateTime('1970-01-01 01:01:05')),
    reinterpretAsFixedString(toDate('1970-03-07'))
┌─reinterpretAsFixedString(toDateTime('1970-01-01 01:01:05'))─┬─reinterpretAsFixedString(toDate('1970-03-07'))─┐
│ A                                                           │ A                                              │
└─────────────────────────────────────────────────────────────┴────────────────────────────────────────────────┘

reinterpretAsFloat32

도입 버전: v1.1

입력 값을 Float32 타입의 값으로 다시 해석합니다. CAST와 달리 이 FUNCTION은 원래 값을 보존하려고 하지 않습니다. 대상 타입이 입력 타입을 표현할 수 없는 경우 결과 값은 정의되지 않습니다.

구문

reinterpretAsFloat32(x)

인수

반환 값

재해석된 x 값을 Float32 형식으로 반환합니다.

예시

사용 예시

SELECT reinterpretAsUInt32(toFloat32(0.2)) AS x, reinterpretAsFloat32(x)
┌──────────x─┬─reinterpretAsFloat32(x)─┐
│ 1045220557 │                     0.2 │
└────────────┴─────────────────────────┘

reinterpretAsFloat64

도입: v1.1

입력 값을 Float64 형식의 값으로 재해석합니다. CAST와 달리, 이 함수는 원래 값을 보존하려고 하지 않습니다. 대상 형식이 입력 값을 표현할 수 없는 경우 출력 값은 정의되지 않습니다.

구문

reinterpretAsFloat64(x)

인수(Arguments)

반환 값(Returned value)

x를 재해석한 값을 반환합니다. Float64

예시(Examples)

사용 예시(Usage example)

SELECT reinterpretAsUInt64(toFloat64(0.2)) AS x, reinterpretAsFloat64(x)
┌───────────────────x─┬─reinterpretAsFloat64(x)─┐
│ 4596373779694328218 │                     0.2 │
└─────────────────────┴─────────────────────────┘

reinterpretAsInt128

도입: v1.1

입력 값을 Int128 타입의 값으로 재해석합니다. CAST와 달리 이 FUNCTION은 원래 값을 보존하려고 시도하지 않습니다. 대상 타입이 입력 타입을 표현할 수 없으면 출력은 정의되지 않습니다.

구문

reinterpretAsInt128(x)

인수

반환 값

재해석된 x 값을 반환합니다. Int128

예시

사용 예시

SELECT
    toInt64(257) AS x,
    toTypeName(x),
    reinterpretAsInt128(x) AS res,
    toTypeName(res)
┌───x─┬─toTypeName(x)─┬─res─┬─toTypeName(res)─┐
│ 257 │ Int64         │ 257 │ Int128          │
└─────┴───────────────┴─────┴─────────────────┘

reinterpretAsInt16

도입 버전: v1.1

입력값을 Int16 타입의 값으로 재해석합니다. CAST와 달리, 이 FUNCTION은 원래 값을 보존하려고 시도하지 않습니다. 대상 타입이 입력 타입을 표현할 수 없는 경우 출력값은 정의되지 않습니다.

문법

reinterpretAsInt16(x)

인수

반환 값

재해석된 값 x를 반환합니다. Int16

예시

사용 예시

SELECT
    toInt8(257) AS x,
    toTypeName(x),
    reinterpretAsInt16(x) AS res,
    toTypeName(res)
┌─x─┬─toTypeName(x)─┬─res─┬─toTypeName(res)─┐
│ 1 │ Int8          │   1 │ Int16           │
└───┴───────────────┴─────┴─────────────────┘

reinterpretAsInt256

도입 버전: v1.1

입력 값을 Int256 타입의 값으로 재해석합니다. CAST와는 달리, 이 함수는 원래 값을 보존하려고 시도하지 않습니다. 대상 타입이 입력 타입을 표현할 수 없는 경우, 출력 값은 정의되지 않습니다.

구문

reinterpretAsInt256(x)

인자

반환 값

재해석된 값 x를 반환합니다. Int256

예시

사용 예시

SELECT
    toInt128(257) AS x,
    toTypeName(x),
    reinterpretAsInt256(x) AS res,
    toTypeName(res)
┌───x─┬─toTypeName(x)─┬─res─┬─toTypeName(res)─┐
│ 257 │ Int128        │ 257 │ Int256          │
└─────┴───────────────┴─────┴─────────────────┘

reinterpretAsInt32

도입 버전: v1.1

입력 값을 Int32 타입의 값으로 재해석합니다. CAST와 달리 이 FUNCTION은 원래 값을 보존하려고 하지 않습니다. 대상 타입으로 입력 값을 표현할 수 없는 경우 결과는 정의되지 않습니다.

구문

reinterpretAsInt32(x)

인자

반환 값

재해석된 값 x를 반환합니다. Int32

예시

사용 예시

SELECT
    toInt16(257) AS x,
    toTypeName(x),
    reinterpretAsInt32(x) AS res,
    toTypeName(res)
┌───x─┬─toTypeName(x)─┬─res─┬─toTypeName(res)─┐
│ 257 │ Int16         │ 257 │ Int32           │
└─────┴───────────────┴─────┴─────────────────┘

reinterpretAsInt64

도입 시기: v1.1

입력 값을 Int64 타입의 값으로 재해석합니다. CAST와는 달리, 이 FUNCTION은 원래 값을 보존하려 하지 않습니다. 대상 타입이 입력 타입을 표현할 수 없으면 출력 결과는 정의되지 않습니다.

문법

reinterpretAsInt64(x)

인수

반환 값

Int64로 재해석된 값 x를 반환합니다. Int64

예시

사용 예시

SELECT
    toInt32(257) AS x,
    toTypeName(x),
    reinterpretAsInt64(x) AS res,
    toTypeName(res)
┌───x─┬─toTypeName(x)─┬─res─┬─toTypeName(res)─┐
│ 257 │ Int32         │ 257 │ Int64           │
└─────┴───────────────┴─────┴─────────────────┘

reinterpretAsInt8

도입: v1.1

입력 값을 Int8 타입의 값으로 재해석합니다. CAST와는 달리, 이 함수는 원래 값을 보존하려고 시도하지 않습니다. 대상 타입이 입력 값을 표현할 수 없으면 결과 값은 정의되지 않습니다.

구문

reinterpretAsInt8(x)

인자

반환 값

재해석한 값 x를 반환합니다. Int8

예시

사용 예시

SELECT
    toUInt8(257) AS x,
    toTypeName(x),
    reinterpretAsInt8(x) AS res,
    toTypeName(res)
┌─x─┬─toTypeName(x)─┬─res─┬─toTypeName(res)─┐
│ 1 │ UInt8         │   1 │ Int8            │
└───┴───────────────┴─────┴─────────────────┘

reinterpretAsString

도입 버전: v1.1

입력 값을 문자열로 재해석합니다(리틀 엔디언 바이트 순서를 가정합니다). 값 끝부분의 널 바이트는 무시되며, 예를 들어 이 함수는 UInt32 값 255에 대해 문자 하나로 이루어진 문자열을 반환합니다.

구문

reinterpretAsString(x)

인자

반환 값

x를 표현하는 바이트를 그대로 포함하는 문자열입니다. String

예시

사용 예시

SELECT
    reinterpretAsString(toDateTime('1970-01-01 01:01:05')),
    reinterpretAsString(toDate('1970-03-07'))
┌─reinterpretAsString(toDateTime('1970-01-01 01:01:05'))─┬─reinterpretAsString(toDate('1970-03-07'))─┐
│ A                                                      │ A                                         │
└────────────────────────────────────────────────────────┴───────────────────────────────────────────┘

reinterpretAsUInt128

도입 버전: v1.1

입력 값을 UInt128 타입의 값으로 재해석합니다. CAST와는 달리, 이 FUNCTION은 원래 값을 보존하려고 하지 않습니다. 대상 타입이 입력 타입을 표현할 수 없으면 결과는 정의되지 않습니다.

구문

reinterpretAsUInt128(x)

인수

반환 값

재해석된 값 x를 반환합니다. UInt128

예제

사용 예제

SELECT
    toUInt64(257) AS x,
    toTypeName(x),
    reinterpretAsUInt128(x) AS res,
    toTypeName(res)
┌───x─┬─toTypeName(x)─┬─res─┬─toTypeName(res)─┐
│ 257 │ UInt64        │ 257 │ UInt128         │
└─────┴───────────────┴─────┴─────────────────┘

reinterpretAsUInt16

도입 버전: v1.1

입력값을 UInt16 타입의 값으로 재해석합니다. CAST와는 달리, 이 FUNCTION은 원래 값을 보존하려고 하지 않습니다. 대상 타입이 입력 타입을 표현할 수 없는 경우, 결과는 정의되지 않습니다.

구문

reinterpretAsUInt16(x)

인수

반환 값

재해석한 값 x를 반환합니다. UInt16

예시

사용 예시

SELECT
    toUInt8(257) AS x,
    toTypeName(x),
    reinterpretAsUInt16(x) AS res,
    toTypeName(res)
┌─x─┬─toTypeName(x)─┬─res─┬─toTypeName(res)─┐
│ 1 │ UInt8         │   1 │ UInt16          │
└───┴───────────────┴─────┴─────────────────┘

reinterpretAsUInt256

도입 버전: v1.1

입력 값을 UInt256 타입의 값으로 다시 해석합니다. CAST와 달리 이 FUNCTION은 원래 값을 보존하려고 시도하지 않습니다. 대상 타입이 입력 값을 표현할 수 없는 경우, 출력 값은 정의되지 않습니다.

문법

reinterpretAsUInt256(x)

인수

반환 값

x를 UInt256으로 재해석한 값을 반환합니다. UInt256

예제

사용 예제

SELECT
    toUInt128(257) AS x,
    toTypeName(x),
    reinterpretAsUInt256(x) AS res,
    toTypeName(res)
┌───x─┬─toTypeName(x)─┬─res─┬─toTypeName(res)─┐
│ 257 │ UInt128       │ 257 │ UInt256         │
└─────┴───────────────┴─────┴─────────────────┘

reinterpretAsUInt32

도입: v1.1

입력 값을 UInt32 타입의 값으로 재해석합니다. CAST와 달리, 이 함수는 원래 값을 보존하려고 시도하지 않습니다. 대상 타입이 입력 타입을 표현할 수 없는 경우 출력 값은 정의되지 않습니다.

구문

reinterpretAsUInt32(x)

인자

반환 값

재해석된 x 값을 반환합니다. UInt32

예시

사용 예시

SELECT
    toUInt16(257) AS x,
    toTypeName(x),
    reinterpretAsUInt32(x) AS res,
    toTypeName(res)
┌───x─┬─toTypeName(x)─┬─res─┬─toTypeName(res)─┐
│ 257 │ UInt16        │ 257 │ UInt32          │
└─────┴───────────────┴─────┴─────────────────┘

reinterpretAsUInt64

도입: v1.1

입력 값을 UInt64 타입의 값으로 재해석합니다. CAST와는 달리, 이 FUNCTION은 원래 값을 보존하려고 시도하지 않습니다. 대상 타입이 입력 값을 표현할 수 없는 경우 출력 값은 정의되지 않습니다.

구문

reinterpretAsUInt64(x)

인자

반환 값

재해석된 x 값을 반환합니다. UInt64

예시

사용 예시

SELECT
    toUInt32(257) AS x,
    toTypeName(x),
    reinterpretAsUInt64(x) AS res,
    toTypeName(res)
┌───x─┬─toTypeName(x)─┬─res─┬─toTypeName(res)─┐
│ 257 │ UInt32        │ 257 │ UInt64          │
└─────┴───────────────┴─────┴─────────────────┘

reinterpretAsUInt8

도입된 버전: v1.1

입력 값을 UInt8 타입의 값으로 다시 해석합니다. CAST와 달리, 대상 타입이 입력 타입을 표현할 수 없더라도 원래 값을 보존하려고 시도하지 않으며, 이 경우 출력 값은 정의되지 않습니다.

구문

reinterpretAsUInt8(x)

인자

반환 값

재해석된 값 x를 반환합니다. UInt8

예시

사용 예시

SELECT
    toInt8(-1) AS val,
    toTypeName(val),
    reinterpretAsUInt8(val) AS res,
    toTypeName(res);
┌─val─┬─toTypeName(val)─┬─res─┬─toTypeName(res)─┐
│  -1 │ Int8            │ 255 │ UInt8           │
└─────┴─────────────────┴─────┴─────────────────┘

reinterpretAsUUID

도입 버전: v1.1

16바이트 길이의 문자열을 받아, 이를 8바이트씩 두 부분으로 나누어 각 부분을 리틀 엔디언(little-endian) 바이트 순서로 해석하여 UUID를 반환합니다. 문자열 길이가 충분하지 않으면, 필요한 개수만큼의 널(null) 바이트가 문자열 끝에 패딩된 것처럼 동작합니다. 문자열이 16바이트보다 길면, 끝에 있는 추가 바이트들은 무시됩니다.

구문

reinterpretAsUUID(fixed_string)

인자

  • fixed_string — 빅엔디언 바이트 문자열입니다. FixedString

반환 값

UUID 타입의 값입니다. UUID

예시

문자열을 UUID로 변환

SELECT reinterpretAsUUID(reverse(unhex('000102030405060708090a0b0c0d0e0f')))
┌─reinterpretAsUUID(reverse(unhex('000102030405060708090a0b0c0d0e0f')))─┐
│                                  08090a0b-0c0d-0e0f-0001-020304050607 │
└───────────────────────────────────────────────────────────────────────┘

toBFloat16

도입: v1.1

입력 값을 BFloat16 타입 값으로 변환합니다. 오류가 발생하면 예외를 발생시킵니다.

함께 보기:

구문

toBFloat16(expr)

인수

  • expr — 숫자 또는 숫자의 문자열 표현을 반환하는 표현식입니다. Expression

반환 값

16비트 brain-float 값입니다. BFloat16

예시

사용 예시

SELECT
toBFloat16(toFloat32(42.7)),
toBFloat16(toFloat32('42.7')),
toBFloat16('42.7')
FORMAT Vertical;
toBFloat16(toFloat32(42.7)): 42.5
toBFloat16(t⋯32('42.7')):    42.5
toBFloat16('42.7'):          42.5

toBFloat16OrNull

도입 버전: v1.1

String 형식의 입력 값을 BFloat16 형식의 값으로 변환합니다. 문자열이 부동 소수점 값을 나타내지 않는 경우 함수는 NULL을 반환합니다.

지원되는 인수:

  • 숫자 값을 나타내는 문자열 표현.

지원되지 않는 인수 (NULL 반환):

  • 이진수 및 16진수 값을 나타내는 문자열 표현.
  • 숫자 값.
참고

이 함수는 문자열 표현에서 변환하는 동안 정밀도 손실이 발생해도 오류 없이 진행되도록 허용합니다.

함께 보기:

문법

toBFloat16OrNull(x)

인수

  • x — 숫자를 나타내는 String 형식의 문자열입니다. String

반환 값

16비트 brain-float 값(BFloat16)을 반환하며, 그렇지 않으면 NULL을 반환합니다. BFloat16 또는 NULL

예시

사용 예시

SELECT toBFloat16OrNull('0x5E'), -- unsupported arguments
       toBFloat16OrNull('12.3'), -- typical use
       toBFloat16OrNull('12.3456789') -- silent loss of precision
\N
12.25
12.3125

toBFloat16OrZero

도입 버전: v1.1

String 입력 값을 BFloat16 타입의 값으로 변환합니다. 문자열이 부동 소수점 값을 나타내지 않으면 함수는 0을 반환합니다.

지원되는 인수:

  • 숫자 값을 나타내는 문자열 표현.

지원되지 않는 인수(0 반환):

  • 2진수 및 16진수 값을 나타내는 문자열 표현.
  • 숫자 값.
참고

이 함수는 문자열 표현에서 변환하는 동안 정밀도 손실이 발생해도 오류나 경고 없이 허용합니다.

함께 보기:

구문

toBFloat16OrZero(x)

인수

  • x — 숫자의 문자열 표현입니다. String

반환 값

16비트 brain-float 값을 반환하며, 그렇지 않은 경우 0을 반환합니다. BFloat16

예시

사용 예시

SELECT toBFloat16OrZero('0x5E'), -- unsupported arguments
       toBFloat16OrZero('12.3'), -- typical use
       toBFloat16OrZero('12.3456789') -- silent loss of precision
0
12.25
12.3125

toBool

도입 버전: v22.2

입력 값을 Bool 타입의 값으로 변환합니다.

구문

toBool(expr)

인수

  • expr — 숫자 또는 문자열을 반환하는 표현식입니다. 문자열의 경우 대소문자를 구분하지 않고 'true' 또는 'false' 값을 허용합니다. (U)Int* 또는 Float* 또는 String 또는 Expression

반환 값

인수의 평가 결과에 따라 true 또는 false를 반환합니다. Bool

예제

사용 예제

SELECT
    toBool(toUInt8(1)),
    toBool(toInt8(-1)),
    toBool(toFloat32(1.01)),
    toBool('true'),
    toBool('false'),
    toBool('FALSE')
FORMAT Vertical
toBool(toUInt8(1)):      true
toBool(toInt8(-1)):      true
toBool(toFloat32(1.01)): true
toBool('true'):          true
toBool('false'):         false
toBool('FALSE'):         false

toDate

도입된 버전: v1.1

입력값을 Date 타입으로 변환합니다. String, FixedString, DateTime 또는 숫자형 타입에서의 변환을 지원합니다.

구문

toDate(x)

인수

반환 값

변환된 입력값을 반환합니다. Date

예제

String을 Date로 변환

SELECT toDate('2025-04-15')
2025-04-15

DateTime 값을 Date로 변환

SELECT toDate(toDateTime('2025-04-15 10:30:00'))
2025-04-15

정수를 Date로 변환

SELECT toDate(20297)
2025-07-28

toDate32

도입 버전: v21.9

인수를 Date32 데이터 타입으로 변환합니다. 값이 범위를 벗어나면 toDate32Date32가 지원하는 경계값을 반환합니다. 인수가 Date 타입인 경우, 해당 타입의 범위를 고려합니다.

구문

toDate32(expr)

인수

반환값

캘린더 날짜인 Date32를 반환합니다.

예제

범위 내

SELECT toDate32('2025-01-01') AS value, toTypeName(value)
FORMAT Vertical
Row 1:
──────
value:           2025-01-01
toTypeName(value): Date32

범위 초과

SELECT toDate32('1899-01-01') AS value, toTypeName(value)
FORMAT Vertical
Row 1:
──────
value:           1900-01-01
toTypeName(value): Date32

toDate32OrDefault

도입 버전: v21.11

인수를 Date32 데이터 타입으로 변환합니다. 값이 범위를 벗어나면 toDate32OrDefaultDate32에서 지원하는 하한 값을 반환합니다. 인수가 Date 타입이면 해당 타입의 범위가 적용됩니다. 유효하지 않은 인수가 전달되면 기본값을 반환합니다.

구문

toDate32OrDefault(expr[, default])

인수

  • expr — 숫자 또는 숫자를 나타내는 문자열을 반환하는 식. String 또는 (U)Int* 또는 Float*
  • default — 선택 사항. 파싱에 실패했을 때 반환할 기본값. Date32

반환 값

성공한 경우 Date32 타입의 값을 반환하며, 그렇지 않으면 지정된 기본값을 반환하고, 기본값이 지정되지 않은 경우 1900-01-01을 반환합니다. Date32

예시

변환 성공 예시

SELECT toDate32OrDefault('1930-01-01', toDate32('2020-01-01'))
1930-01-01

형 변환 실패

SELECT toDate32OrDefault('xx1930-01-01', toDate32('2020-01-01'))
2020-01-01

toDate32OrNull

도입 버전: v21.9

입력 값을 Date32 타입 값으로 변환하며, 잘못된 인수가 전달되면 NULL을 반환합니다. toDate32와 동일하지만 잘못된 인수가 전달되면 NULL을 반환합니다.

구문

toDate32OrNull(x)

인수

  • x — 날짜를 문자열로 표현한 값입니다. String

반환 값

성공하면 Date32 값을 반환하고, 그렇지 않으면 NULL을 반환합니다. Date32 또는 NULL

예제

사용 예제

SELECT toDate32OrNull('2025-01-01'), toDate32OrNull('invalid')
┌─toDate32OrNull('2025-01-01')─┬─toDate32OrNull('invalid')─┐
│                   2025-01-01 │                      ᴺᵁᴸᴸ │
└──────────────────────────────┴───────────────────────────┘

toDate32OrZero

도입 버전: v21.9

입력 값을 Date32 타입의 값으로 변환하며, 잘못된 인수가 전달되면 Date32의 하한값을 반환합니다. toDate32와 동일하지만, 잘못된 인수가 전달되면 Date32의 하한값을 반환합니다.

함께 보기:

구문

toDate32OrZero(x)

인자

  • x — 날짜를 나타내는 문자열. String

반환 값

성공하면 Date32 값을, 실패하면 Date32의 하한 값인 1900-01-01을 반환합니다. Date32

예시

사용 예시

SELECT toDate32OrZero('2025-01-01'), toDate32OrZero('')
┌─toDate32OrZero('2025-01-01')─┬─toDate32OrZero('')─┐
│                   2025-01-01 │         1900-01-01 │
└──────────────────────────────┴────────────────────┘

toDateOrDefault

도입된 버전: v21.11

toDate와 동일하지만, 변환에 실패하는 경우 기본값을 반환합니다. 기본값은 두 번째 인자가 지정되어 있으면 그 값이고, 지정되지 않은 경우 Date의 최솟값입니다.

구문

toDateOrDefault(expr[, default])

인수

  • expr — 숫자 값이거나 숫자의 문자열 표현을 반환하는 표현식입니다. String 또는 (U)Int* 또는 Float*
  • default — 선택 사항입니다. 파싱에 실패했을 때 반환할 기본값입니다. Date

반환 값

성공하면 Date 타입의 값을 반환하고, 그렇지 않으면 default 인수가 전달된 경우 해당 기본값을, 전달되지 않은 경우 1970-01-01을 반환합니다. Date

예시

성공적인 변환

SELECT toDateOrDefault('2022-12-30')
2022-12-30

변환 실패

SELECT toDateOrDefault('', CAST('2023-01-01', 'Date'))
2023-01-01

toDateOrNull

도입 버전: v1.1

입력값을 Date 타입의 값으로 변환하지만, 잘못된 인수가 전달되면 NULL을 반환합니다. toDate와 동일하지만, 잘못된 인수가 전달되면 NULL을 반환합니다.

구문

toDateOrNull(x)

인자

  • x — 날짜를 나타내는 문자열 표현입니다. String

반환 값

성공하면 Date 값을, 그렇지 않으면 NULL을 반환합니다. Date 또는 NULL

예시

사용 예시

SELECT toDateOrNull('2025-12-30'), toDateOrNull('invalid')
┌─toDateOrNull('2025-12-30')─┬─toDateOrNull('invalid')─┐
│                 2025-12-30 │                   ᴺᵁᴸᴸ │
└────────────────────────────┴────────────────────────┘

toDateOrZero

도입 버전: v1.1

입력 값을 Date 타입으로 변환하지만, 잘못된 인수가 전달되면 Date의 하한 값을 반환합니다. toDate와 동일하지만, 잘못된 인수가 전달되면 Date 타입의 하한 값을 반환합니다.

함께 보기:

구문

toDateOrZero(x)

인자

  • x — 문자열 형식의 날짜. String

반환 값

성공적으로 변환되면 Date 값을, 그렇지 않으면 Date의 하한값인 1970-01-01을 반환합니다. Date

예시

사용 예시

SELECT toDateOrZero('2025-12-30'), toDateOrZero('')
┌─toDateOrZero('2025-12-30')─┬─toDateOrZero('')─┐
│                 2025-12-30 │       1970-01-01 │
└────────────────────────────┴──────────────────┘

toDateTime

도입 버전: v1.1

입력 값을 DateTime 타입으로 변환합니다.

참고

expr이 숫자인 경우, Unix Epoch의 시작 시점부터 경과한 초 수(Unix timestamp)로 해석됩니다. exprString인 경우, Unix timestamp 또는 날짜 / 날짜와 시간의 문자열 표현으로 해석될 수 있습니다. 이 때문에 짧은 숫자 문자열(최대 4자리)의 파싱은 모호성으로 인해 명시적으로 비활성화되어 있습니다. 예를 들어 문자열 '1999'는 연도(불완전한 Date / DateTime 문자열 표현)이거나 Unix timestamp일 수도 있습니다. 더 긴 숫자 문자열은 허용됩니다.

구문

toDateTime(expr[, time_zone])

인수

반환 값

DateTime 형식의 날짜와 시간 값을 반환합니다. DateTime

예제

사용 예제

SELECT toDateTime('2025-01-01 00:00:00'), toDateTime(1735689600, 'UTC')
FORMAT Vertical
Row 1:
──────
toDateTime('2025-01-01 00:00:00'): 2025-01-01 00:00:00
toDateTime(1735689600, 'UTC'):     2025-01-01 00:00:00

toDateTime32

도입된 버전: v20.9

입력 값을 DateTime 타입으로 변환합니다. String, FixedString, Date, Date32, DateTime 또는 숫자 타입((U)Int*, Float*, Decimal)에서의 변환을 지원합니다. DateTime32는 DateTime과 비교해 확장된 범위를 제공하며, 1900-01-01부터 2299-12-31까지의 날짜를 지원합니다.

구문

toDateTime32(x[, timezone])

인수

반환 값

변환된 입력값을 반환합니다. DateTime

예시

값이 범위 내에 있는 경우

SELECT toDateTime64('2025-01-01 00:00:00.000', 3) AS value, toTypeName(value);
┌───────────────────value─┬─toTypeName(toDateTime64('20255-01-01 00:00:00.000', 3))─┐
│ 2025-01-01 00:00:00.000 │ DateTime64(3)                                          │
└─────────────────────────┴────────────────────────────────────────────────────────┘

정밀도를 지정한 10진수로

SELECT toDateTime64(1735689600.000, 3) AS value, toTypeName(value);
-- without the decimal point the value is still treated as Unix Timestamp in seconds
SELECT toDateTime64(1546300800000, 3) AS value, toTypeName(value);
┌───────────────────value─┬─toTypeName(toDateTime64(1735689600.000, 3))─┐
│ 2025-01-01 00:00:00.000 │ DateTime64(3)                            │
└─────────────────────────┴──────────────────────────────────────────┘
┌───────────────────value─┬─toTypeName(toDateTime64(1546300800000, 3))─┐
│ 2282-12-31 00:00:00.000 │ DateTime64(3)                              │
└─────────────────────────┴────────────────────────────────────────────┘

타임존 포함

SELECT toDateTime64('2025-01-01 00:00:00', 3, 'Asia/Istanbul') AS value, toTypeName(value);
┌───────────────────value─┬─toTypeName(toDateTime64('2025-01-01 00:00:00', 3, 'Asia/Istanbul'))─┐
│ 2025-01-01 00:00:00.000 │ DateTime64(3, 'Asia/Istanbul')                                      │
└─────────────────────────┴─────────────────────────────────────────────────────────────────────┘

toDateTime64

도입 버전: v20.1

입력값을 DateTime64 타입의 값으로 변환합니다.

구문

toDateTime64(expr, scale[, timezone])

인수

  • expr — 숫자 또는 숫자의 문자열 표현을 반환하는 식(expression). Expression
  • scale — 틱 크기(정밀도): 10^(-scale) 초. UInt8
  • timezone — 선택 사항. 지정된 DateTime64 객체의 시간대. String

반환 값

하위 초 단위 정밀도를 갖는 달력 날짜 및 시각을 반환합니다. DateTime64

예시

값이 허용 범위 내에 있는 경우

SELECT toDateTime64('2025-01-01 00:00:00.000', 3) AS value, toTypeName(value);
┌───────────────────value─┬─toTypeName(toDateTime64('2025-01-01 00:00:00.000', 3))─┐
│ 2025-01-01 00:00:00.000 │ DateTime64(3)                                          │
└─────────────────────────┴────────────────────────────────────────────────────────┘

지정된 정밀도의 decimal로

SELECT toDateTime64(1546300800.000, 3) AS value, toTypeName(value);
-- Without the decimal point the value is still treated as Unix Timestamp in seconds
SELECT toDateTime64(1546300800000, 3) AS value, toTypeName(value);
┌───────────────────value─┬─toTypeName(toDateTime64(1546300800000, 3))─┐
│ 2282-12-31 00:00:00.000 │ DateTime64(3)                              │
└─────────────────────────┴────────────────────────────────────────────┘

타임존 포함

SELECT toDateTime64('2025-01-01 00:00:00', 3, 'Asia/Istanbul') AS value, toTypeName(value);
┌───────────────────value─┬─toTypeName(toDateTime64('2025-01-01 00:00:00', 3, 'Asia/Istanbul'))─┐
│ 2025-01-01 00:00:00.000 │ DateTime64(3, 'Asia/Istanbul')                                      │
└─────────────────────────┴─────────────────────────────────────────────────────────────────────┘

toDateTime64OrDefault

도입 버전: v21.11

toDateTime64와 같이, 이 FUNCTION은 입력값을 DateTime64 타입의 값으로 변환하지만, 유효하지 않은 인수가 전달되었을 때는 DateTime64의 기본값 또는 사용자가 지정한 기본값을 반환합니다.

구문

toDateTime64OrDefault(expr, scale[, timezone, default])

인수

  • expr — 숫자 또는 숫자의 문자열 표현을 반환하는 표현식입니다. String 또는 (U)Int* 또는 Float*
  • scale — 틱 크기(정밀도)입니다. 10^-precision 초 단위입니다. UInt8
  • timezone — 선택 사항입니다. 시간대입니다. String
  • default — 선택 사항입니다. 파싱에 실패한 경우 반환할 기본값입니다. DateTime64

반환 값

변환에 성공하면 DateTime64 타입의 값을 반환하며, 그렇지 않은 경우 전달된 기본값이 있으면 해당 값을, 없으면 1970-01-01 00:00:00.000을 반환합니다. DateTime64

예시

성공적인 변환

SELECT toDateTime64OrDefault('1976-10-18 00:00:00.30', 3)
1976-10-18 00:00:00.300

형 변환 실패

SELECT toDateTime64OrDefault('1976-10-18 00:00:00 30', 3, 'UTC', toDateTime64('2001-01-01 00:00:00.00',3))
2000-12-31 23:00:00.000

toDateTime64OrNull

도입 버전: v20.1

입력값을 DateTime64 타입 값으로 변환하지만, 유효하지 않은 인수가 전달되면 NULL을 반환합니다. toDateTime64와 동일하지만, 유효하지 않은 인수가 전달되면 NULL을 반환합니다.

구문

toDateTime64OrNull(x)

인수

  • x — 시간 및 서브초 정밀도를 포함하는 날짜의 문자열 표현입니다. String

반환 값

성공한 경우 DateTime64 값을, 그렇지 않은 경우 NULL을 반환합니다. DateTime64 또는 NULL

예시

사용 예시

SELECT toDateTime64OrNull('2025-12-30 13:44:17.123'), toDateTime64OrNull('invalid')
┌─toDateTime64OrNull('2025-12-30 13:44:17.123')─┬─toDateTime64OrNull('invalid')─┐
│                         2025-12-30 13:44:17.123 │                          ᴺᵁᴸᴸ │
└─────────────────────────────────────────────────┴───────────────────────────────┘

toDateTime64OrZero

도입된 버전: v20.1

입력 값을 DateTime64 타입의 값으로 변환하지만, 잘못된 인수가 전달된 경우 DateTime64의 하한 값을 반환합니다. toDateTime64와 동일하지만, 잘못된 인수가 전달된 경우 DateTime64의 하한 값을 반환합니다.

관련 항목:

구문

toDateTime64OrZero(x)

인수

  • x — 시간과 초 이하 단위까지의 정밀도를 포함한 날짜의 문자열 표현. String

반환 값

성공하면 DateTime64 값을 반환하고, 그렇지 않으면 DateTime64의 하한값인 1970-01-01 00:00:00.000을 반환합니다. DateTime64

예제

사용 예제

SELECT toDateTime64OrZero('2025-12-30 13:44:17.123'), toDateTime64OrZero('invalid')
┌─toDateTime64OrZero('2025-12-30 13:44:17.123')─┬─toDateTime64OrZero('invalid')─┐
│                         2025-12-30 13:44:17.123 │             1970-01-01 00:00:00.000 │
└─────────────────────────────────────────────────┴─────────────────────────────────────┘

toDateTimeOrDefault

도입 버전: v21.11

toDateTime과 동일하지만, 변환에 실패하는 경우 기본값을 반환합니다. 기본값은 세 번째 인자가 지정된 경우 해당 값이고, 지정되지 않은 경우 DateTime의 최솟값입니다.

구문

toDateTimeOrDefault(expr[, timezone, default])

인자

  • expr — 숫자 또는 숫자의 문자열 표현을 반환하는 식입니다. String 또는 (U)Int* 또는 Float*
  • timezone — 선택 사항입니다. 시간대입니다. String
  • default — 선택 사항입니다. 파싱에 실패했을 때 반환할 기본값입니다. DateTime

반환 값

성공한 경우 DateTime 타입의 값을 반환하고, 그렇지 않으면 전달된 기본값을 반환하며, 기본값이 없으면 1970-01-01 00:00:00을 반환합니다. DateTime

예시

성공한 변환

SELECT toDateTimeOrDefault('2022-12-30 13:44:17')
2022-12-30 13:44:17

변환 실패

SELECT toDateTimeOrDefault('', 'UTC', CAST('2023-01-01', 'DateTime(\'UTC\')'))
2023-01-01 00:00:00

toDateTimeOrNull

도입된 버전: v1.1

입력값을 DateTime 타입의 값으로 변환하지만, 잘못된 인자가 전달되면 NULL을 반환합니다. toDateTime와 동일하지만, 잘못된 인자가 전달되면 NULL을 반환합니다.

구문

toDateTimeOrNull(x)

인수

  • x — 시간 정보를 포함한 날짜의 문자열 형식입니다. String

반환 값

성공하면 DateTime 값을, 그렇지 않으면 NULL을 반환합니다. DateTime 또는 NULL

예제

사용 예제

SELECT toDateTimeOrNull('2025-12-30 13:44:17'), toDateTimeOrNull('invalid')
┌─toDateTimeOrNull('2025-12-30 13:44:17')─┬─toDateTimeOrNull('invalid')─┐
│                     2025-12-30 13:44:17 │                        ᴺᵁᴸᴸ │
└─────────────────────────────────────────┴─────────────────────────────┘

toDateTimeOrZero

도입 버전: v1.1

입력값을 DateTime 타입의 값으로 변환하지만, 잘못된 인수가 전달되면 DateTime 하한값을 반환합니다. toDateTime과 동일하게 동작하지만, 잘못된 인수가 전달될 경우 DateTime 하한값을 반환합니다.

구문

toDateTimeOrZero(x)

인수

  • x — 시간 정보를 포함한 날짜의 문자열 표현입니다. String

반환 값

성공하면 DateTime 값을 반환하고, 그렇지 않으면 DateTime의 최소값인 1970-01-01 00:00:00을 반환합니다. DateTime

예시

사용 예시

SELECT toDateTimeOrZero('2025-12-30 13:44:17'), toDateTimeOrZero('invalid')
┌─toDateTimeOrZero('2025-12-30 13:44:17')─┬─toDateTimeOrZero('invalid')─┐
│                     2025-12-30 13:44:17 │         1970-01-01 00:00:00 │
└─────────────────────────────────────────┴─────────────────────────────┘

toDecimal128

도입된 버전: v18.12

입력 값을 스케일 S를 가지는 Decimal(38, S) 타입의 값으로 변환합니다. 오류가 발생하면 예외를 발생시킵니다.

지원되는 인수:

  • (U)Int* 타입의 값 또는 해당 값의 문자열 표현.
  • Float* 타입의 값 또는 해당 값의 문자열 표현.

지원되지 않는 인수:

  • Float* 값 NaNInf의 값 또는 이 값들의 문자열 표현(대소문자 구분 없음).
  • 이진수 및 16진수 값의 문자열 표현, 예: SELECT toDecimal128('0xc0fe', 1);.
참고

expr의 값이 Decimal128의 범위 (-1*10^(38 - S), 1*10^(38 - S))를 초과하면 오버플로가 발생할 수 있습니다. 소수 부분의 초과 자릿수는 버려지며(반올림되지 않음), 정수 부분의 초과 자릿수는 예외를 발생시킵니다.

참고

변환 과정에서 여분의 자릿수가 잘려 나가고, 연산이 부동소수점 명령어를 사용하여 수행되므로 Float32/Float64 입력을 사용할 때 예상과 다르게 동작할 수 있습니다. 예를 들어, toDecimal128(1.15, 2)는 1.15 * 100이 부동소수점에서 114.99가 되기 때문에 1.14와 같습니다. 문자열 입력을 사용하면 내부적으로 정수 타입을 사용하여 연산할 수 있습니다: toDecimal128('1.15', 2) = 1.15

구문

toDecimal128(expr, S)

인수

  • expr — 숫자 또는 숫자의 문자열 표현을 반환하는 표현식입니다. Expression
  • S — 0 이상 38 이하의 스케일 매개변수로, 숫자의 소수부가 가질 수 있는 자릿수를 지정합니다. UInt8

반환 값

Decimal(38, S) 타입의 값을 반환합니다. Decimal128(S)

예시

사용 예시

SELECT
    toDecimal128(99, 1) AS a, toTypeName(a) AS type_a,
    toDecimal128(99.67, 2) AS b, toTypeName(b) AS type_b,
    toDecimal128('99.67', 3) AS c, toTypeName(c) AS type_c
FORMAT Vertical
Row 1:
──────
a:      99
type_a: Decimal(38, 1)
b:      99.67
type_b: Decimal(38, 2)
c:      99.67
type_c: Decimal(38, 3)

toDecimal128OrDefault

도입 버전: v21.11

toDecimal128과(와) 마찬가지로, 이 FUNCTION은 입력값을 Decimal(38, S) 타입의 값으로 변환하지만, 오류가 발생한 경우 기본값을 반환합니다.

구문

toDecimal128OrDefault(expr, S[, default])

인수

  • expr — 숫자를 문자열로 표현한 값입니다. String
  • S — 0에서 38 사이의 스케일(scale) 매개변수로, 숫자의 소수 부분이 가질 수 있는 자릿수 개수를 지정합니다. UInt8
  • default — 선택 사항입니다. Decimal128(S) 타입으로의 파싱이 실패했을 때 반환할 기본값입니다. Decimal128(S)

반환 값

성공한 경우 Decimal(38, S) 타입의 값을, 그렇지 않은 경우 전달된 기본값이 있으면 해당 값을, 없으면 0을 반환합니다. Decimal128(S)

예시

성공적인 변환

SELECT toDecimal128OrDefault(toString(1/42), 18)
0.023809523809523808

형 변환 실패

SELECT toDecimal128OrDefault('Inf', 0, CAST('-1', 'Decimal128(0)'))
-1

toDecimal128OrNull

도입 버전: v20.1

입력 값을 Decimal(38, S) 타입의 값으로 변환하지만, 오류가 발생한 경우 NULL을 반환합니다. toDecimal128와 유사하지만, 변환 오류 시 예외를 발생시키는 대신 NULL을 반환합니다.

지원되는 인수:

  • (U)Int* 타입의 값 또는 해당 값의 문자열 표현.
  • Float* 타입의 값 또는 해당 값의 문자열 표현.

지원되지 않는 인수(NULL 반환):

  • Float* 값 NaNInf 값 또는 해당 값의 문자열 표현(대소문자 구분 없음).
  • 2진수 및 16진수 값의 문자열 표현.
  • Decimal128의 범위를 초과하는 값: (-1*10^(38 - S), 1*10^(38 - S)).

관련 항목:

구문

toDecimal128OrNull(expr, S)

인수

  • expr — 숫자 또는 숫자의 문자열 표현을 반환하는 표현식입니다. Expression
  • S — 0과 38 사이의 스케일(scale) 매개변수로, 숫자의 소수부가 가질 수 있는 자릿수 개수를 지정합니다. UInt8

반환 값

성공하면 Decimal(38, S) 값을 반환하고, 그렇지 않으면 NULL을 반환합니다. Decimal128(S) 또는 NULL

예제

사용 예제

SELECT toDecimal128OrNull('42.7', 2), toDecimal128OrNull('invalid', 2)
┌─toDecimal128OrNull('42.7', 2)─┬─toDecimal128OrNull('invalid', 2)─┐
│                         42.70 │                             ᴺᵁᴸᴸ │
└───────────────────────────────┴──────────────────────────────────┘

toDecimal128OrZero

도입 버전: v20.1

입력 값을 Decimal(38, S) 타입의 값으로 변환하지만, 오류가 발생하는 경우 0을 반환합니다. toDecimal128과 동일하지만, 변환 오류 시 예외를 발생시키는 대신 0을 반환합니다.

지원되는 인자:

  • (U)Int* 타입 값 또는 해당 값의 문자열 표현.
  • Float* 타입 값 또는 해당 값의 문자열 표현.

지원되지 않는 인자(0을 반환):

  • Float* 타입의 NaNInf 값 또는 해당 값의 문자열 표현(대소문자 구분 없음).
  • 2진수 및 16진수 값의 문자열 표현.
참고

입력 값이 Decimal128의 경계 (-1*10^(38 - S), 1*10^(38 - S))를 초과하면 함수는 0을 반환합니다.

구문

toDecimal128OrZero(expr, S)

인수

  • expr — 숫자 또는 숫자를 나타내는 문자열을 반환하는 식입니다. Expression
  • S — 0에서 38 사이의 스케일(scale) 매개변수로, 숫자의 소수 부분이 가질 수 있는 자릿수 개수를 지정합니다. UInt8

반환 값

성공한 경우 Decimal(38, S) 값을 반환하고, 그렇지 않으면 0을 반환합니다. Decimal128(S)

예제

기본 사용 예

SELECT toDecimal128OrZero('42.7', 2), toDecimal128OrZero('invalid', 2)
┌─toDecimal128OrZero('42.7', 2)─┬─toDecimal128OrZero('invalid', 2)─┐
│                         42.70 │                             0.00 │
└───────────────────────────────┴──────────────────────────────────┘

toDecimal256

도입된 버전: v20.8

입력 값을 스케일이 SDecimal(76, S) 타입 값으로 변환합니다. 오류가 발생하면 예외를 발생시킵니다.

지원되는 인수:

  • (U)Int* 타입 값 또는 해당 문자열 표현.
  • Float* 타입 값 또는 해당 문자열 표현.

지원되지 않는 인수:

  • Float* 값 NaNInf(대소문자 구분 없음) 또는 해당 문자열 표현.
  • 이진 및 16진수 값의 문자열 표현(예: SELECT toDecimal256('0xc0fe', 1);).
참고

expr 값이 Decimal256의 범위 (-1*10^(76 - S), 1*10^(76 - S))를 초과하면 오버플로가 발생할 수 있습니다. 소수부에서 초과된 자릿수는 (반올림 없이) 버려집니다. 정수부에서 초과된 자릿수는 예외를 발생시킵니다.

참고

변환 과정에서 추가 자릿수가 버려지며, 연산이 부동소수점 명령어를 사용하여 수행되므로 Float32/Float64 입력으로 작업할 때 예기치 않은 방식으로 동작할 수 있습니다. 예를 들어, toDecimal256(1.15, 2)1.14와 같습니다. 이는 부동소수점에서 1.15 * 100이 114.99가 되기 때문입니다. 문자열 입력을 사용하면 기본 정수 타입을 사용하여 연산할 수 있습니다: toDecimal256('1.15', 2) = 1.15

Syntax

toDecimal256(expr, S)

인자

  • expr — 숫자 또는 숫자를 나타내는 문자열을 반환하는 표현식입니다. Expression
  • S — 0 이상 76 이하의 스케일(scale) 매개변수로, 소수 부분이 가질 수 있는 자릿수의 개수를 지정합니다. UInt8

반환 값

Decimal(76, S) 타입의 값을 반환합니다. Decimal256(S)

예시

사용 예시

SELECT
    toDecimal256(99, 1) AS a, toTypeName(a) AS type_a,
    toDecimal256(99.67, 2) AS b, toTypeName(b) AS type_b,
    toDecimal256('99.67', 3) AS c, toTypeName(c) AS type_c
FORMAT Vertical
Row 1:
──────
a:      99
type_a: Decimal(76, 1)
b:      99.67
type_b: Decimal(76, 2)
c:      99.67
type_c: Decimal(76, 3)

toDecimal256OrDefault

도입 버전: v21.11

toDecimal256와 마찬가지로 이 FUNCTION은 입력값을 Decimal(76, S) 형식의 값으로 변환하지만, 오류가 발생하면 기본값을 반환합니다.

구문

toDecimal256OrDefault(expr, S[, default])

인수

  • expr — 숫자를 String 형식으로 표현한 값입니다. String
  • S — 0부터 76 사이의 스케일(scale) 매개변수로, 숫자의 소수 부분이 가질 수 있는 자릿수 개수를 지정합니다. UInt8
  • default — 선택 사항입니다. Decimal256(S) 타입으로 파싱(parse)하지 못했을 때 반환할 기본값입니다. Decimal256(S)

반환 값

성공하면 Decimal(76, S) 타입의 값을 반환하고, 그렇지 않으면 기본값이 전달된 경우 해당 값을, 그렇지 않은 경우 0을 반환합니다. Decimal256(S)

예시

변환 성공 예

SELECT toDecimal256OrDefault(toString(1/42), 76)
0.023809523809523808

변환 실패

SELECT toDecimal256OrDefault('Inf', 0, CAST('-1', 'Decimal256(0)'))
-1

toDecimal256OrNull

도입 버전: v20.8

입력 값을 Decimal(76, S) 형식의 값으로 변환하지만, 오류가 발생하는 경우 NULL을 반환합니다. toDecimal256와 유사하지만, 변환 오류 시 예외를 던지는 대신 NULL을 반환합니다.

지원되는 인수:

  • (U)Int* 형식의 값 또는 해당 문자열 표현.
  • Float* 형식의 값 또는 해당 문자열 표현.

지원되지 않는 인수(NULL 반환):

  • Float* 형식의 NaN, Inf 값 또는 해당 문자열 표현(대소문자를 구분하지 않습니다).
  • 2진수 및 16진수 값의 문자열 표현.
  • Decimal256의 범위를 초과하는 값: (-1 * 10^(76 - S), 1 * 10^(76 - S)).

관련 항목:

구문

toDecimal256OrNull(expr, S)

인수

  • expr — 숫자 또는 숫자의 문자열 표현을 반환하는 표현식입니다. Expression
  • S — 0에서 76 사이의 스케일 매개변수로, 숫자의 소수 부분에서 허용되는 자릿수의 개수를 지정합니다. UInt8

반환 값

성공하면 Decimal(76, S) 값을 반환하고, 그렇지 않으면 NULL을 반환합니다. Decimal256(S) 또는 NULL

예시

사용 예시

SELECT toDecimal256OrNull('42.7', 2), toDecimal256OrNull('invalid', 2)
┌─toDecimal256OrNull('42.7', 2)─┬─toDecimal256OrNull('invalid', 2)─┐
│                         42.70 │                             ᴺᵁᴸᴸ │
└───────────────────────────────┴──────────────────────────────────┘

toDecimal256OrZero

도입 버전: v20.8

입력 값을 Decimal(76, S) 타입의 값으로 변환하지만, 오류가 발생한 경우 0을 반환합니다. toDecimal256과 유사하지만, 변환 오류 시 예외를 던지는 대신 0을 반환합니다.

지원되는 인수:

  • (U)Int* 타입 값 또는 해당 문자열 표현.
  • Float* 타입 값 또는 해당 문자열 표현.

지원되지 않는 인수(0을 반환):

  • NaNInf와 같은 Float* 값 또는 해당 문자열 표현(대소문자 구분 없음).
  • 2진수 및 16진수 값의 문자열 표현.
참고

입력 값이 Decimal256의 범위 (-1*10^(76 - S), 1*10^(76 - S))를 초과하는 경우, 함수는 0을 반환합니다.

함께 참고:

구문

toDecimal256OrZero(expr, S)

인수

  • expr — 숫자 또는 숫자를 나타내는 문자열을 반환하는 식입니다. Expression
  • S — 0에서 76 사이의 스케일(scale) 매개변수로, 숫자의 소수 부분이 가질 수 있는 자릿수를 지정합니다. UInt8

반환 값

성공한 경우 Decimal(76, S) 값을, 그렇지 않으면 0을 반환합니다. Decimal256(S)

예시

사용 예시

SELECT toDecimal256OrZero('42.7', 2), toDecimal256OrZero('invalid', 2)
┌─toDecimal256OrZero('42.7', 2)─┬─toDecimal256OrZero('invalid', 2)─┐
│                         42.70 │                             0.00 │
└───────────────────────────────┴──────────────────────────────────┘

toDecimal32

도입 버전: v18.12

입력값을 스케일이 SDecimal(9, S) 타입의 값으로 변환합니다. 오류가 발생하는 경우 예외를 발생시킵니다.

지원되는 인수:

  • (U)Int* 타입 값 또는 해당 문자열 표현.
  • Float* 타입 값 또는 해당 문자열 표현.

지원되지 않는 인수:

  • Float* 값 NaNInf 또는 해당 문자열 표현(대소문자 무시).
  • 이진수 및 16진수 값의 문자열 표현. 예: SELECT toDecimal32('0xc0fe', 1);.
참고

expr의 값이 Decimal32의 범위 (-1*10^(9 - S), 1*10^(9 - S))를 초과하면 오버플로가 발생할 수 있습니다. 소수부의 자릿수가 너무 많으면 초과분은 버려지며(반올림하지 않음), 정수부의 자릿수가 너무 많으면 예외가 발생합니다.

참고

변환 시 초과 자릿수가 잘려 나가며, 부동소수점 명령어를 사용하여 연산이 수행되므로 Float32/Float64 입력을 사용할 때 예상과 다르게 동작할 수 있습니다. 예: toDecimal32(1.15, 2)1.14와 같은데, 이는 부동소수점에서 1.15 * 100이 114.99가 되기 때문입니다. 연산이 내부적으로 정수 타입을 사용하도록 하려면 String 입력을 사용할 수 있습니다: toDecimal32('1.15', 2) = 1.15

구문

toDecimal32(expr, S)

인수

  • expr — 숫자 또는 숫자를 나타내는 문자열을 반환하는 표현식입니다. Expression
  • S — 0에서 9 사이의 스케일 매개변수로, 숫자의 소수 부분이 가질 수 있는 자릿수 개수를 지정합니다. UInt8

반환 값

Decimal(9, S) 타입의 값 Decimal32(S)을(를) 반환합니다.

예시

사용 예시

SELECT
    toDecimal32(2, 1) AS a, toTypeName(a) AS type_a,
    toDecimal32(4.2, 2) AS b, toTypeName(b) AS type_b,
    toDecimal32('4.2', 3) AS c, toTypeName(c) AS type_c
FORMAT Vertical
Row 1:
──────
a:      2
type_a: Decimal(9, 1)
b:      4.2
type_b: Decimal(9, 2)
c:      4.2
type_c: Decimal(9, 3)

toDecimal32OrDefault

도입된 버전: v21.11

toDecimal32와 마찬가지로 이 FUNCTION은 입력값을 Decimal(9, S) 타입의 값으로 변환하지만, 오류가 발생하면 기본값을 반환합니다.

구문

toDecimal32OrDefault(expr, S[, default])

인수

  • expr — 숫자의 문자열(String) 표현입니다. String
  • S — 0과 9 사이의 스케일(scale) 매개변수로, 숫자의 소수 부분이 가질 수 있는 자릿수입니다. UInt8
  • default — 선택 사항입니다. Decimal32(S) 타입으로 파싱에 실패했을 때 반환할 기본값입니다. Decimal32(S)

반환 값

성공하면 Decimal(9, S) 타입의 값을 반환하고, 실패하면 전달된 경우 기본값을, 전달되지 않은 경우 0을 반환합니다. Decimal32(S)

예시

성공적인 변환

SELECT toDecimal32OrDefault(toString(0.0001), 5)
0.0001

변환 실패

SELECT toDecimal32OrDefault('Inf', 0, CAST('-1', 'Decimal32(0)'))
-1

toDecimal32OrNull

도입 버전: v20.1

입력 값을 Decimal(9, S) 타입의 값으로 변환하지만, 오류가 발생하는 경우 NULL을 반환합니다. toDecimal32와 유사하지만, 변환 오류 시 예외를 던지는 대신 NULL을 반환합니다.

지원되는 인수:

  • (U)Int* 타입 값 또는 해당 타입의 문자열 표현.
  • Float* 타입 값 또는 해당 타입의 문자열 표현.

지원되지 않는 인수(NULL 반환):

  • Float* 타입의 NaNInf 값 또는 해당 문자열 표현(대소문자 구분 없음).
  • 이진수 및 16진수 값의 문자열 표현.
  • Decimal32의 범위를 벗어나는 값: (-1*10^(9 - S), 1*10^(9 - S)).

관련 항목:

구문

toDecimal32OrNull(expr, S)

인자(Arguments)

  • expr — 숫자 또는 숫자를 나타내는 문자열을 반환하는 식입니다. Expression
  • S — 0 이상 9 이하의 스케일(scale) 파라미터로, 숫자의 소수 부분 자릿수 최대 개수를 지정합니다. UInt8

반환 값(Returned value)

성공하면 Decimal(9, S) 값을, 그렇지 않으면 NULL을 반환합니다. Decimal32(S) 또는 NULL

예시(Examples)

사용 예시(Usage example)

SELECT toDecimal32OrNull('42.7', 2), toDecimal32OrNull('invalid', 2)
┌─toDecimal32OrNull('42.7', 2)─┬─toDecimal32OrNull('invalid', 2)─┐
│                        42.70 │                            ᴺᵁᴸᴸ │
└──────────────────────────────┴─────────────────────────────────┘

toDecimal32OrZero

도입 버전: v20.1

입력값을 Decimal(9, S) 타입의 값으로 변환하지만, 오류가 발생하는 경우 0을 반환합니다. toDecimal32와 유사하지만, 변환 오류 시 예외를 발생시키는 대신 0을 반환합니다.

지원되는 인수:

  • (U)Int* 타입의 값 또는 해당 값의 문자열 표현.
  • Float* 타입의 값 또는 해당 값의 문자열 표현.

지원되지 않는 인수(0 반환):

  • Float* 값 NaNInf(대소문자 구분 없음) 또는 그 문자열 표현.
  • 2진수 및 16진수 값의 문자열 표현.
참고

입력값이 Decimal32의 범위 (-1*10^(9 - S), 1*10^(9 - S))를 초과하면 함수는 0을 반환합니다.

구문

toDecimal32OrZero(expr, S)

인수

  • expr — 숫자 또는 숫자를 문자열로 표현한 값을 반환하는 표현식입니다. Expression
  • S — 0에서 9 사이의 스케일(scale) 매개변수로, 숫자의 소수 부분이 가질 수 있는 자릿수(소수점 이하 자리 수)를 지정합니다. UInt8

반환 값

성공 시 Decimal(9, S) 값을 반환하며, 실패 시 0을 반환합니다. Decimal32(S)

예시

사용 예시

SELECT toDecimal32OrZero('42.7', 2), toDecimal32OrZero('invalid', 2)
┌─toDecimal32OrZero('42.7', 2)─┬─toDecimal32OrZero('invalid', 2)─┐
│                        42.70 │                            0.00 │
└──────────────────────────────┴─────────────────────────────────┘

toDecimal64

도입 버전: v18.12

입력 값을 스케일 S를 가진 Decimal(18, S) 형식의 값으로 변환합니다. 오류가 발생하면 예외가 발생합니다.

지원되는 인수:

  • (U)Int* 형식의 값 또는 해당 문자열 표현.
  • Float* 형식의 값 또는 해당 문자열 표현.

지원되지 않는 인수:

  • Float* 값 NaNInf(대소문자 구분 안 함) 또는 해당 문자열 표현.
  • 이진 및 16진수 값의 문자열 표현. 예: SELECT toDecimal64('0xc0fe', 1);.
참고

expr 값이 Decimal64의 범위 (-1*10^(18 - S), 1*10^(18 - S))를 초과하면 오버플로가 발생할 수 있습니다. 소수 부분의 너무 많은 자릿수는 버려집니다(반올림하지 않음). 정수 부분의 너무 많은 자릿수는 예외를 발생시킵니다.

참고

변환 과정에서 추가 자릿수는 버려지며, 연산이 부동소수점 명령을 사용하여 수행되므로 Float32/Float64 입력을 사용할 때 예상과 다르게 동작할 수 있습니다. 예를 들어 toDecimal64(1.15, 2) 의 결과는 1.14인데, 이는 부동소수점 연산에서 1.15 * 100 이 114.99가 되기 때문입니다. 문자열 입력을 사용하면 연산에 기본 정수 형식을 사용할 수 있습니다: toDecimal64('1.15', 2) = 1.15

구문

toDecimal64(expr, S)

인수

  • expr — 숫자 또는 숫자의 문자열 표현을 반환하는 식. Expression
  • S — 0 이상 18 이하의 정수 값으로, 숫자의 소수부가 가질 수 있는 자릿수(스케일)를 지정하는 매개변수. UInt8

반환 값

10진수 값을 반환합니다. Decimal(18, S)

예시

사용 예시

SELECT
    toDecimal64(2, 1) AS a, toTypeName(a) AS type_a,
    toDecimal64(4.2, 2) AS b, toTypeName(b) AS type_b,
    toDecimal64('4.2', 3) AS c, toTypeName(c) AS type_c
FORMAT Vertical
Row 1:
──────
a:      2.0
type_a: Decimal(18, 1)
b:      4.20
type_b: Decimal(18, 2)
c:      4.200
type_c: Decimal(18, 3)

toDecimal64OrDefault

도입 버전: v21.11

toDecimal64와 마찬가지로 이 FUNCTION은 입력값을 Decimal(18, S) 형식의 값으로 변환하지만, 오류가 발생하면 기본값을 반환합니다.

구문

toDecimal64OrDefault(expr, S[, default])

인수

  • expr — 숫자를 나타내는 문자열 표현입니다. String
  • S — 0에서 18 사이의 스케일 매개변수로, 숫자의 소수 부분이 가질 수 있는 자릿수입니다. UInt8
  • default — 선택 사항입니다. Decimal64(S) 타입으로 파싱하는 데 실패했을 때 반환할 기본값입니다. Decimal64(S)

반환 값

성공하면 Decimal(18, S) 타입의 값이며, 그렇지 않으면 기본값이 전달된 경우 해당 값을, 전달되지 않은 경우 0을 반환합니다. Decimal64(S)

예제

성공적인 변환

SELECT toDecimal64OrDefault(toString(0.0001), 18)
0.0001

변환 실패

SELECT toDecimal64OrDefault('Inf', 0, CAST('-1', 'Decimal64(0)'))
-1

toDecimal64OrNull

도입 버전: v20.1

입력 값을 Decimal(18, S) 타입의 값으로 변환하지만, 오류가 발생한 경우 NULL을 반환합니다. toDecimal64와 같지만, 변환 오류 시 예외를 던지는 대신 NULL을 반환합니다.

지원하는 인수:

  • 타입이 (U)Int*인 값 또는 해당 값의 문자열 표현.
  • 타입이 Float*인 값 또는 해당 값의 문자열 표현.

지원되지 않는 인수(NULL 반환):

  • Float* 값 NaNInf의 문자열 표현(대소문자를 구분하지 않습니다).
  • 이진수 및 16진수 값의 문자열 표현.
  • Decimal64의 범위를 초과하는 값: (-1*10^(18 - S), 1*10^(18 - S)).

함께 보기:

구문

toDecimal64OrNull(expr, S)

인수

  • expr — 숫자 또는 숫자의 문자열 표현을 반환하는 식입니다. Expression
  • S — 0 이상 18 이하의 스케일(scale) 매개변수로, 숫자의 소수 부분에서 사용할 수 있는 자릿수입니다. UInt8

반환 값

성공한 경우 Decimal(18, S) 값을 반환하고, 그렇지 않으면 NULL을 반환합니다. Decimal64(S) 또는 NULL

예시

사용 예시

SELECT toDecimal64OrNull('42.7', 2), toDecimal64OrNull('invalid', 2)
┌─toDecimal64OrNull('42.7', 2)─┬─toDecimal64OrNull('invalid', 2)─┐
│                        42.70 │                            ᴺᵁᴸᴸ │
└──────────────────────────────┴─────────────────────────────────┘

toDecimal64OrZero

도입된 버전: v20.1

입력 값을 Decimal(18, S) 타입의 값으로 변환하지만, 오류가 발생하는 경우 0을 반환합니다. toDecimal64와 유사하지만, 변환 오류 시 예외를 발생시키는 대신 0을 반환합니다.

지원되는 인수:

  • (U)Int* 타입의 값 또는 그 문자열 표현.
  • Float* 타입의 값 또는 그 문자열 표현.

지원되지 않는 인수(0 반환):

  • Float* 값 NaNInf의 값 또는 그 문자열 표현(대소문자 구분 없음).
  • 이진 및 16진수 값의 문자열 표현.
참고

입력 값이 Decimal64의 경계 값 (-1*10^(18 - S), 1*10^(18 - S))를 벗어나면 함수는 0을 반환합니다.

함께 보기:

구문

toDecimal64OrZero(expr, S)

인수

  • expr — 숫자 또는 숫자의 문자열 표현을 반환하는 표현식입니다. Expression
  • S — 0과 18 사이의 스케일(scale) 매개변수로, 숫자의 소수 부분이 가질 수 있는 자릿수입니다. UInt8

반환 값

성공 시 Decimal(18, S) 값을 반환하고, 그렇지 않으면 0을 반환합니다. Decimal64(S)

예시

사용 예시

SELECT toDecimal64OrZero('42.7', 2), toDecimal64OrZero('invalid', 2)
┌─toDecimal64OrZero('42.7', 2)─┬─toDecimal64OrZero('invalid', 2)─┐
│                        42.70 │                            0.00 │
└──────────────────────────────┴─────────────────────────────────┘

toDecimalString

도입된 버전: v23.3

숫자 값을 지정된 소수 자릿수의 String으로 변환합니다.

이 FUNCTION은 입력값을 지정된 소수 자릿수로 반올림합니다. 입력값의 소수 자릿수가 요청된 자릿수보다 적으면, 결과가 지정된 소수 자릿수와 정확히 일치하도록 끝을 0으로 채웁니다.

Syntax

toDecimalString(number, scale)

인수

  • number — 문자열로 변환할 숫자 값입니다. Int, UInt, Float, Decimal 모든 숫자형 타입을 허용합니다. Int8 또는 Int16 또는 Int32 또는 Int64 또는 UInt8 또는 UInt16 또는 UInt32 또는 UInt64 또는 Float32 또는 Float64 또는 Decimal
  • scale — 소수 부분에 표시할 자릿수입니다. 필요하면 결과가 반올림됩니다. UInt8

반환 값

정확히 지정된 개수의 소수 자릿수를 가진 숫자의 문자열(String) 표현을 반환합니다. String

예시

숫자를 반올림하고 형식 지정하기

SELECT toDecimalString(2.1456, 2)
┌─toDecimalString(2.1456, 2)─┐
│ 2.15                       │
└────────────────────────────┘

0으로 채우기

SELECT toDecimalString(5, 3)
┌─toDecimalString(5, 3)─┐
│ 5.000                 │
└───────────────────────┘

서로 다른 숫자형

SELECT toDecimalString(CAST(123.456 AS Decimal(10,3)), 2) AS decimal_val,
       toDecimalString(CAST(42.7 AS Float32), 4) AS float_val
┌─decimal_val─┬─float_val─┐
│ 123.46      │ 42.7000   │
└─────────────┴───────────┘

toFixedString

도입 버전: v1.1

String 인수를 FixedString(N) 타입(길이가 N으로 고정된 문자열)으로 변환합니다.

문자열의 바이트 수가 N보다 적으면 오른쪽에 널 바이트(null byte)로 패딩됩니다. 문자열의 바이트 수가 N보다 많으면 예외가 발생합니다.

구문

toFixedString(s, N)

인수

  • s — 변환할 문자열입니다. String
  • N — 결과로 생성될 FixedString의 길이입니다. const UInt*

반환 값

길이가 N인 FixedString을 반환합니다. FixedString(N)

예시

사용 예시

SELECT toFixedString('foo', 8) AS s;
┌─s─────────────┐
│ foo\0\0\0\0\0 │
└───────────────┘

toFloat32

도입 버전: v1.1

입력 값을 Float32 타입의 값으로 변환합니다. 오류가 발생하면 예외를 발생시킵니다.

지원되는 인수:

  • (U)Int* 타입의 값.
  • (U)Int8/16/32/128/256의 문자열 표현.
  • NaNInf를 포함한 Float* 타입의 값.
  • NaNInf를 포함한 Float*의 문자열 표현(대소문자 구분 없음).

지원되지 않는 인수:

  • SELECT toFloat32('0xc0fe');와 같은 이진수 및 16진수 값의 문자열 표현.

같이 보기:

구문

toFloat32(expr)

인자

  • expr — 숫자 또는 숫자를 나타내는 문자열을 반환하는 식입니다. Expression

반환 값

32비트 부동 소수점 값을 반환합니다. Float32

예시

사용 예시

SELECT
    toFloat32(42.7),
    toFloat32('42.7'),
    toFloat32('NaN')
FORMAT Vertical
Row 1:
──────
toFloat32(42.7):   42.7
toFloat32('42.7'): 42.7
toFloat32('NaN'):  nan

toFloat32OrDefault

도입 버전: v21.11

toFloat32와 마찬가지로 이 함수는 입력값을 Float32 타입의 값으로 변환하지만, 오류가 발생하면 기본값을 반환합니다. default 값이 전달되지 않으면 오류가 발생했을 때 0이 반환됩니다.

구문

toFloat32OrDefault(expr[, default])

인수

  • expr — 숫자 또는 숫자의 문자열 표현을 반환하는 식입니다. String 또는 (U)Int* 또는 Float*
  • default — 선택 사항입니다. 파싱에 실패했을 때 반환할 기본값입니다. Float32

반환 값

성공하면 Float32 타입의 값을 반환하고, 그렇지 않으면 기본값이 지정된 경우 해당 값을, 지정되지 않은 경우 0을 반환합니다. Float32

예제

성공적인 변환

SELECT toFloat32OrDefault('8', CAST('0', 'Float32'))
8

변환 실패

SELECT toFloat32OrDefault('abc', CAST('0', 'Float32'))
0

toFloat32OrNull

도입 버전: v1.1

입력 값을 Float32 타입 값으로 변환하지만, 오류가 발생하는 경우 NULL을 반환합니다. toFloat32와 같지만, 변환 오류 시 예외를 던지는 대신 NULL을 반환합니다.

지원되는 인자:

  • (U)Int* 타입 값.
  • (U)Int8/16/32/128/256의 문자열 표현.
  • NaNInf를 포함한 Float* 타입 값.
  • NaNInf를 포함한 Float*의 문자열 표현(대소문자를 구분하지 않음).

지원되지 않는 인자(NULL 반환):

  • SELECT toFloat32OrNull('0xc0fe');와 같은 2진수 및 16진수 값의 문자열 표현.
  • 잘못된 문자열 형식.

함께 보기:

문법

toFloat32OrNull(x)

인자

  • x — 숫자를 나타내는 문자열입니다. String

반환 값

성공하면 32비트 Float 값을 반환하고, 그렇지 않으면 NULL을 반환합니다. Float32 또는 NULL

예시

사용 예시

SELECT
    toFloat32OrNull('42.7'),
    toFloat32OrNull('NaN'),
    toFloat32OrNull('abc')
FORMAT Vertical
Row 1:
──────
toFloat32OrNull('42.7'): 42.7
toFloat32OrNull('NaN'):  nan
toFloat32OrNull('abc'):  \N

toFloat32OrZero

도입 버전: v1.1

입력 값을 Float32 타입의 값으로 변환합니다. 이때 오류가 발생하면 0을 반환합니다. toFloat32와 유사하지만, 변환 오류 시 예외를 발생시키는 대신 0을 반환합니다.

함께 보기:

구문

toFloat32OrZero(x)

인자

  • x — 숫자를 나타내는 문자열입니다. String

반환 값

성공 시 32비트 부동소수점(Float) 값을 반환하고, 그렇지 않으면 0을 반환합니다. Float32

예시

사용 예시

SELECT
    toFloat32OrZero('42.7'),
    toFloat32OrZero('abc')
FORMAT Vertical
Row 1:
──────
toFloat32OrZero('42.7'): 42.7
toFloat32OrZero('abc'):  0

toFloat64

도입 버전: v1.1

입력 값을 Float64 타입의 값으로 변환합니다. 오류가 발생하면 예외가 발생합니다.

지원되는 인수:

  • (U)Int* 타입의 값
  • (U)Int8/16/32/128/256의 문자열 표현
  • NaNInf를 포함한 Float* 타입의 값
  • NaNInf를 포함한 Float* 타입의 문자열 표현(대소문자 구분 없음)

지원되지 않는 인수:

  • SELECT toFloat64('0xc0fe');와 같은 2진수 및 16진수 값의 문자열 표현

추가 참고:

Syntax

toFloat64(expr)

인수

  • expr — 숫자 또는 숫자를 나타내는 문자열을 반환하는 표현식입니다. Expression

반환 값

64비트 부동소수점 값을 반환합니다. Float64

예제

사용 예제

SELECT
    toFloat64(42.7),
    toFloat64('42.7'),
    toFloat64('NaN')
FORMAT Vertical
Row 1:
──────
toFloat64(42.7):   42.7
toFloat64('42.7'): 42.7
toFloat64('NaN'):  nan

toFloat64OrDefault

도입 버전: v21.11

toFloat64와 마찬가지로, 이 FUNCTION은 입력값을 Float64 형식의 값으로 변환하지만 오류가 발생한 경우 기본값을 반환합니다. default 값을 전달하지 않으면 오류가 발생했을 때 0이 반환됩니다.

문법

toFloat64OrDefault(expr[, default])

인수

  • expr — 숫자 또는 숫자 형태의 문자열을 반환하는 표현식입니다. String 또는 (U)Int* 또는 Float*
  • default — 선택 사항입니다. 파싱에 실패했을 때 반환할 기본값입니다. Float64

반환 값

변환에 성공하면 Float64 타입의 값을 반환하고, 그렇지 않으면 전달된 경우 기본값을, 전달되지 않은 경우 0을 반환합니다. Float64

예시

변환 성공 사례

SELECT toFloat64OrDefault('8', CAST('0', 'Float64'))
8

변환 실패

SELECT toFloat64OrDefault('abc', CAST('0', 'Float64'))
0

toFloat64OrNull

도입 버전: v1.1

입력값을 Float64 타입의 값으로 변환하지만, 오류가 발생하는 경우 NULL을 반환합니다. toFloat64와 유사하지만, 변환 오류 시 예외를 던지는 대신 NULL을 반환합니다.

지원되는 인수:

  • (U)Int* 타입의 값.
  • (U)Int8/16/32/128/256의 문자열 표현.
  • NaNInf를 포함한 Float* 타입의 값.
  • NaNInf를 포함한 Float* 타입의 문자열 표현(대소문자를 구분하지 않음).

지원되지 않는 인수(NULL 반환):

  • 이진 및 16진수 값의 문자열 표현(예: SELECT toFloat64OrNull('0xc0fe');).
  • 잘못된 문자열 형식.

함께 보기:

구문

toFloat64OrNull(x)

인수

  • x — 숫자를 나타내는 문자열입니다. String

반환 값

성공하면 64비트 부동 소수점 값을, 그렇지 않으면 NULL을 반환합니다. Float64 또는 NULL

예시

사용 예시

SELECT
    toFloat64OrNull('42.7'),
    toFloat64OrNull('NaN'),
    toFloat64OrNull('abc')
FORMAT Vertical
Row 1:
──────
toFloat64OrNull('42.7'): 42.7
toFloat64OrNull('NaN'):  nan
toFloat64OrNull('abc'):  \N

toFloat64OrZero

도입 버전: v1.1

입력 값을 Float64 타입의 값으로 변환하지만, 오류가 발생하는 경우 0을 반환합니다. toFloat64와 같지만, 변환 오류 시 예외를 발생시키는 대신 0을 반환합니다.

함께 보기:

구문

toFloat64OrZero(x)

인수

  • x — 숫자를 나타내는 문자열입니다. String

반환 값

성공하면 64비트 부동 소수점 값을 반환하고, 그렇지 않으면 0을 반환합니다. Float64

예제

사용 예제

SELECT
    toFloat64OrZero('42.7'),
    toFloat64OrZero('abc')
FORMAT Vertical
Row 1:
──────
toFloat64OrZero('42.7'): 42.7
toFloat64OrZero('abc'):  0

toInt128

도입 버전: v1.1

입력 값을 Int128 타입의 값으로 변환합니다. 오류가 발생하면 예외를 던집니다. 이 함수는 0을 향해 반올림하는 방식을 사용하므로, 숫자의 소수 자릿수를 잘라냅니다.

지원되는 인수:

  • (U)Int* 타입 값 또는 해당 값의 문자열 표현.
  • Float* 타입 값.

지원되지 않는 인수:

  • NaNInf를 포함한 Float* 값의 문자열 표현.
  • SELECT toInt128('0xc0fe');와 같은 이진수 및 16진수 값의 문자열 표현.
참고

입력 값을 Int128 범위 내에서 표현할 수 없는 경우, 결과에 오버플로우 또는 언더플로우가 발생합니다. 이는 오류로 간주되지 않습니다.

함께 보기:

구문

toInt128(expr)

인자

  • expr — 숫자 값 또는 숫자를 나타내는 문자열을 반환하는 표현식입니다. Expression

반환 값

128비트 정수 값을 반환합니다. Int128

예시

사용 예시

SELECT
    toInt128(-128),
    toInt128(-128.8),
    toInt128('-128')
FORMAT Vertical
Row 1:
──────
toInt128(-128):   -128
toInt128(-128.8): -128
toInt128('-128'): -128

toInt128OrDefault

도입 버전: v21.11

toInt128과 같이, 이 함수는 입력값을 Int128 타입의 값으로 변환하지만, 오류가 발생한 경우 기본값을 반환합니다. default 값이 전달되지 않으면 오류가 발생한 경우 0이 반환됩니다.

문법

toInt128OrDefault(expr[, default])

인수

  • expr — 숫자 또는 숫자를 나타내는 문자열 표현을 반환하는 식입니다. String 또는 (U)Int* 또는 Float*
  • default — 선택 사항입니다. 파싱에 실패했을 때 반환할 기본값입니다. Int128

반환 값

성공한 경우 Int128 타입의 값을 반환하며, 실패한 경우 전달된 기본값이 있으면 해당 값을, 없으면 0을 반환합니다. Int128

예제

성공적인 변환

SELECT toInt128OrDefault('-128', CAST('-1', 'Int128'))
-128

변환 실패

SELECT toInt128OrDefault('abc', CAST('-1', 'Int128'))
-1

toInt128OrNull

도입 버전: v20.8

toInt128과(와) 마찬가지로 이 FUNCTION은 입력값을 Int128 타입의 값으로 변환하지만, 오류가 발생하는 경우 NULL을 반환합니다.

지원되는 인수:

  • (U)Int*의 문자열 표현

지원되지 않는 인수(NULL 반환):

  • NaNInf를 포함한 Float* 값의 문자열 표현
  • SELECT toInt128OrNull('0xc0fe');와 같은 이진수 및 16진수 값의 문자열 표현
참고

입력값을 Int128의 범위 내에서 표현할 수 없으면 결과에서 오버플로 또는 언더플로가 발생합니다. 이는 오류로 간주되지 않습니다.

관련 항목:

Syntax

toInt128OrNull(x)

인수

  • x — 숫자를 String 형식으로 표현한 값입니다. String

반환 값

변환에 성공하면 Int128 타입의 값을, 실패하면 NULL을 반환합니다. Int128 또는 NULL

예제

사용 예제

SELECT
    toInt128OrNull('-128'),
    toInt128OrNull('abc')
FORMAT Vertical
Row 1:
──────
toInt128OrNull('-128'): -128
toInt128OrNull('abc'):  \N

toInt128OrZero

도입된 버전: v20.8

입력 값을 Int128 데이터 타입으로 변환하지만 오류가 발생하는 경우 0을 반환합니다. toInt128와 유사하지만, 예외를 던지는 대신 0을 반환합니다.

함께 보기:

구문

toInt128OrZero(x)

인수

반환 값

변환된 입력값을 반환하며, 변환에 실패하면 0을 반환합니다. 반환 타입: Int128

예시

사용 예시

SELECT toInt128OrZero('123')
123

변환에 실패하면 0을 반환합니다

SELECT toInt128OrZero('abc')
0

toInt16

도입된 버전: v1.1

입력값을 Int16 타입의 값으로 변환합니다. 오류가 발생하면 예외를 발생시킵니다.

지원되는 인수:

  • (U)Int* 타입의 값 또는 해당 문자열 표현.
  • Float* 타입의 값.

지원되지 않는 인수:

  • NaNInf를 포함한 Float* 값의 문자열 표현.
  • SELECT toInt16('0xc0fe');와 같은 2진수 및 16진수 값의 문자열 표현.
참고

입력값을 Int16의 범위 내에서 표현할 수 없는 경우, 결과에 오버플로 또는 언더플로가 발생합니다. 이는 오류로 간주되지 않습니다. 예: SELECT toInt16(32768) == -32768;.

참고

이 함수는 0으로의 반올림(rounding towards zero)을 사용하며, 이는 숫자의 소수 부분을 잘라낸다는 의미입니다.

함께 보기:

구문

toInt16(expr)

인자

  • expr — 숫자 또는 숫자를 나타내는 문자열을 반환하는 식입니다. Expression

반환 값

16비트 정수 값을 반환합니다. Int16

예시

사용 예시

SELECT
    toInt16(-16),
    toInt16(-16.16),
    toInt16('-16')
FORMAT Vertical
Row 1:
──────
toInt16(-16):    -16
toInt16(-16.16): -16
toInt16('-16'):  -16

toInt16OrDefault

도입 버전: v21.11

toInt16과 마찬가지로 이 함수는 입력값을 Int16 타입의 값으로 변환하지만, 오류가 발생할 경우 기본값을 반환합니다. default 값이 지정되지 않은 경우, 오류가 발생하면 0이 반환됩니다.

구문

toInt16OrDefault(expr[, default])

인자

  • expr — 숫자 또는 숫자를 나타내는 문자열을 반환하는 표현식입니다. String 또는 (U)Int* 또는 Float*
  • default — 선택 사항입니다. 파싱에 실패한 경우 반환할 기본값입니다. Int16

반환 값

성공하면 Int16 타입의 값을 반환하고, 그렇지 않으면 기본값이 지정된 경우 해당 값을, 지정되지 않은 경우 0을 반환합니다. Int16

예시

변환 성공 예

SELECT toInt16OrDefault('-16', CAST('-1', 'Int16'))
-16

변환 실패

SELECT toInt16OrDefault('abc', CAST('-1', 'Int16'))
-1

toInt16OrNull

도입된 버전: v1.1

toInt16과 마찬가지로 이 FUNCTION은 입력 값을 Int16 타입의 값으로 변환하지만, 오류가 발생하는 경우 NULL을 반환합니다.

지원되는 인수:

  • (U)Int*의 문자열 표현

지원되지 않는 인수(NULL 반환):

  • NaNInf를 포함한 Float* 값의 문자열 표현
  • 이진수 및 16진수 값의 문자열 표현(예: SELECT toInt16OrNull('0xc0fe');)
참고

입력 값을 Int16의 범위 내에서 표현할 수 없으면 결과에 오버플로 또는 언더플로가 발생합니다. 이는 오류로 간주되지 않습니다.

함께 보기:

구문

toInt16OrNull(x)

인수

  • x — 숫자를 문자열로 표현한 값입니다. String

반환 값

Int16 타입의 값을 반환하며, 변환에 실패하면 NULL을 반환합니다. Int16 또는 NULL

예시

사용 예시

SELECT
    toInt16OrNull('-16'),
    toInt16OrNull('abc')
FORMAT Vertical
Row 1:
──────
toInt16OrNull('-16'): -16
toInt16OrNull('abc'): \N

toInt16OrZero

도입 버전: v1.1

toInt16와 마찬가지로 이 FUNCTION은 입력 값을 Int16 타입의 값으로 변환하지만, 오류가 발생하는 경우 0을 반환합니다.

지원되는 인수:

  • (U)Int*의 문자열 표현.

지원되지 않는 인수(0 반환):

  • NaNInf를 포함한 Float* 값의 문자열 표현.
  • 2진수 및 16진수 값의 문자열 표현(예: SELECT toInt16OrZero('0xc0fe');).
참고

입력 값을 Int16의 범위 내에서 표현할 수 없으면 결과에서 오버플로 또는 언더플로가 발생합니다. 이 동작은 오류로 간주되지 않습니다.

함께 보기:

구문

toInt16OrZero(x)

인수

  • x — 숫자를 나타내는 문자열입니다. String

반환 값

Int16 타입의 값을 반환하며, 변환이 실패한 경우 0을 반환합니다. Int16

예시

사용 예시

SELECT
    toInt16OrZero('16'),
    toInt16OrZero('abc')
FORMAT Vertical
Row 1:
──────
toInt16OrZero('16'): 16
toInt16OrZero('abc'): 0

toInt256

도입 버전: v1.1

입력 값을 Int256 형식의 값으로 변환합니다. 오류가 발생하면 예외를 발생시킵니다. 이 함수는 0을 향한 반올림을 사용하므로, 숫자의 소수 자릿수를 절사합니다.

지원되는 인수:

  • 형식이 (U)Int*인 값 또는 해당 문자열 표현입니다.
  • 형식이 Float*인 값입니다.

지원되지 않는 인수:

  • NaNInf를 포함하여, Float* 값의 문자열 표현입니다.
  • SELECT toInt256('0xc0fe');와 같은 2진수 및 16진수 값의 문자열 표현입니다.
참고

입력 값을 Int256의 범위 내에서 표현할 수 없는 경우, 결과가 오버플로 또는 언더플로를 일으킵니다. 이는 오류로 간주되지 않습니다.

함께 보기:

구문

toInt256(expr)

인수

  • expr — 숫자 또는 숫자를 나타내는 문자열을 반환하는 표현식입니다. Expression

반환되는 값

256비트 정수 값을 반환합니다. Int256

예제

사용 예제

SELECT
    toInt256(-256),
    toInt256(-256.256),
    toInt256('-256')
FORMAT Vertical
Row 1:
──────
toInt256(-256):     -256
toInt256(-256.256): -256
toInt256('-256'):   -256

toInt256OrDefault

도입 버전: v21.11

toInt256과 유사하게 이 FUNCTION은 입력 값을 Int256 타입의 값으로 변환하지만, 오류가 발생하면 기본값을 반환합니다. default 값이 전달되지 않으면 오류 발생 시 0이 반환됩니다.

구문

toInt256OrDefault(expr[, default])

인수

  • expr — 숫자 또는 숫자의 문자열 표현을 반환하는 식입니다. String 또는 (U)Int* 또는 Float*
  • default — 선택 사항입니다. 파싱에 실패했을 때 반환할 기본값입니다. Int256

반환 값

성공 시 Int256 타입의 값을 반환하고, 실패한 경우 전달된 기본값이 있으면 해당 값을, 없으면 0을 반환합니다. Int256

예시

변환 성공 예시

SELECT toInt256OrDefault('-256', CAST('-1', 'Int256'))
-256

변환 실패

SELECT toInt256OrDefault('abc', CAST('-1', 'Int256'))
-1

toInt256OrNull

도입 버전: v20.8

toInt256와 같이, 이 FUNCTION은 입력값을 Int256 타입의 값으로 변환하지만, 오류가 발생한 경우 NULL을 반환합니다.

지원되는 인수:

  • (U)Int*의 문자열 표현.

지원되지 않는 인수(NULL을 반환):

  • NaNInf를 포함한 Float* 값의 문자열 표현.
  • 2진수 및 16진수 값의 문자열 표현. 예: SELECT toInt256OrNull('0xc0fe');.
참고

입력값을 Int256의 범위 안에서 표현할 수 없으면 결과에 오버플로우 또는 언더플로우가 발생합니다. 이는 오류로 간주되지 않습니다.

관련 항목:

구문

toInt256OrNull(x)

인수

  • x — 숫자를 나타내는 String 형식의 문자열입니다. String

반환 값

변환이 성공하면 Int256 타입의 값을 반환하고, 실패하면 NULL을 반환합니다. Int256 또는 NULL

예시

사용 예시

SELECT
    toInt256OrNull('-256'),
    toInt256OrNull('abc')
FORMAT Vertical
Row 1:
──────
toInt256OrNull('-256'): -256
toInt256OrNull('abc'):  \N

toInt256OrZero

도입 버전: v20.8

입력값을 Int256 타입으로 변환하지만, 오류가 발생할 경우 0을 반환합니다. toInt256과 동일하지만, 예외를 발생시키는 대신 0을 반환합니다.

관련 항목:

구문

toInt256OrZero(x)

인수

반환값

변환된 입력값을 반환하고, 변환에 실패하면 0을 반환합니다. Int256

예시

사용 예시

SELECT toInt256OrZero('123')
123

변환 실패 시 0을 반환

SELECT toInt256OrZero('abc')
0

toInt32

도입 버전: v1.1

입력 값을 Int32 타입의 값으로 변환합니다. 오류가 발생하면 예외를 발생시킵니다.

지원되는 인수:

  • (U)Int* 타입의 값 또는 그 문자열 표현.
  • Float* 타입의 값.

지원되지 않는 인수:

  • NaNInf를 포함한 Float* 값의 문자열 표현.
  • SELECT toInt32('0xc0fe');와 같은 2진수 및 16진수 값의 문자열 표현.
참고

입력 값을 Int32의 범위 내에서 표현할 수 없는 경우 결과가 오버플로 또는 언더플로됩니다. 이는 오류로 간주되지 않습니다. 예: SELECT toInt32(2147483648) == -2147483648;

참고

이 함수는 0을 향한 반올림을 사용하므로 숫자의 소수 자릿수를 잘라냅니다.

함께 보기:

구문

toInt32(expr)

인수

  • expr — 숫자 또는 숫자를 나타내는 문자열을 반환하는 표현식입니다. Expression

반환값

32비트 정수 값을 반환합니다. Int32

예시

사용 예시

SELECT
    toInt32(-32),
    toInt32(-32.32),
    toInt32('-32')
FORMAT Vertical
Row 1:
──────
toInt32(-32):    -32
toInt32(-32.32): -32
toInt32('-32'):  -32

toInt32OrDefault

도입 버전: v21.11

toInt32와 마찬가지로, 이 함수는 입력값을 Int32 형식의 값으로 변환하지만, 오류가 발생하면 기본값을 반환합니다. default 값이 지정되지 않은 경우, 오류 발생 시 0이 반환됩니다.

구문

toInt32OrDefault(expr[, default])

인자

  • expr — 숫자 또는 숫자를 문자열로 표현한 값을 반환하는 식입니다. String 또는 (U)Int* 또는 Float*
  • default — 선택 사항입니다. 파싱에 실패했을 때 반환할 기본값입니다. Int32

반환 값

성공한 경우 Int32 타입의 값을 반환하며, 실패한 경우 인자로 기본값이 전달되었으면 해당 기본값을, 전달되지 않았으면 0을 반환합니다. Int32

예시

성공적인 변환

SELECT toInt32OrDefault('-32', CAST('-1', 'Int32'))
-32

변환 실패

SELECT toInt32OrDefault('abc', CAST('-1', 'Int32'))
-1

toInt32OrNull

도입 버전: v1.1

toInt32와 마찬가지로 이 FUNCTION은 입력값을 Int32 타입의 값으로 변환하지만, 오류가 발생할 경우 NULL을 반환합니다.

지원되는 인수:

  • (U)Int*의 문자열 표현.

지원되지 않는 인수(NULL 반환):

  • NaNInf를 포함한 Float* 값의 문자열 표현.
  • 예: SELECT toInt32OrNull('0xc0fe');와 같은 이진수 및 16진수 값의 문자열 표현.
참고

입력값을 Int32 범위 내에서 표현할 수 없으면 결과에 오버플로 또는 언더플로가 발생합니다. 이는 오류로 간주되지 않습니다.

관련 항목:

구문

toInt32OrNull(x)

인자

  • x — 숫자를 나타내는 문자열입니다. String

반환 값

변환이 성공하면 Int32 타입의 값을, 실패하면 NULL을 반환합니다. Int32 또는 NULL

예시

사용 예시

SELECT
    toInt32OrNull('-32'),
    toInt32OrNull('abc')
FORMAT Vertical
Row 1:
──────
toInt32OrNull('-32'): -32
toInt32OrNull('abc'): \N

toInt32OrZero

도입 버전: v1.1

toInt32와 마찬가지로 이 함수는 입력값을 Int32 타입의 값으로 변환하지만, 오류가 발생하면 0을 반환합니다.

지원되는 인수:

  • (U)Int*의 문자열 표현.

지원되지 않는 인수(0 반환):

  • NaNInf를 포함한 Float* 값의 문자열 표현.
  • 이진수 및 16진수 값의 문자열 표현. 예: SELECT toInt32OrZero('0xc0fe');.
참고

입력값을 Int32의 범위 내에서 표현할 수 없는 경우 결과에 오버플로 또는 언더플로가 발생합니다. 이는 오류로 간주되지 않습니다.

관련 항목:

구문

toInt32OrZero(x)

인자

  • x — 숫자를 나타내는 String 형식의 문자열입니다. String

반환 값

Int32 타입의 값을 반환하며, 변환에 실패하면 0을 반환합니다. Int32

예시

사용 예시

SELECT
    toInt32OrZero('32'),
    toInt32OrZero('abc')
FORMAT Vertical
Row 1:
──────
toInt32OrZero('32'): 32
toInt32OrZero('abc'): 0

toInt64

도입 버전: v1.1

입력 값을 Int64 타입의 값으로 변환합니다. 오류가 발생하면 예외를 발생시킵니다.

지원되는 인수:

  • (U)Int* 타입의 값 또는 해당 문자열 표현.
  • Float* 타입의 값.

지원되지 않는 인수:

  • NaN, Inf를 포함한 Float* 값의 문자열 표현
  • SELECT toInt64('0xc0fe');와 같은 이진수 및 16진수 값의 문자열 표현.
참고

입력 값을 Int64의 범위 내에서 표현할 수 없는 경우 결과에 오버플로 또는 언더플로가 발생합니다. 이는 오류로 간주되지 않습니다. 예를 들어: SELECT toInt64(9223372036854775808) == -9223372036854775808;

참고

이 함수는 0 방향으로 반올림(rounding towards zero)을 사용하므로, 숫자의 소수 자릿수를 잘라냅니다.

함께 보기:

구문

toInt64(expr)

인자

  • expr — 숫자 또는 숫자의 문자열 표현을 반환하는 식입니다. 지원되는 입력: 타입이 (U)Int인 값 및 해당 값의 문자열 표현, 타입이 Float인 값. 지원되지 않는 입력: NaN 및 Inf를 포함한 Float* 값의 문자열 표현, 2진수 및 16진수 값의 문자열 표현. Expression

반환 값

64비트 정수 값을 반환합니다. Int64

예시

사용 예시

SELECT
    toInt64(-64),
    toInt64(-64.64),
    toInt64('-64')
FORMAT Vertical
Row 1:
──────
toInt64(-64):    -64
toInt64(-64.64): -64
toInt64('-64'):  -64

toInt64OrDefault

도입 버전: v21.11

toInt64와 같이, 이 FUNCTION은 입력 값을 Int64 유형의 값으로 변환하지만 오류가 발생하는 경우 기본값을 반환합니다. default 값이 지정되지 않으면 오류가 발생할 때 0이 반환됩니다.

구문

toInt64OrDefault(expr[, default])

인자

  • expr — 숫자 또는 숫자를 나타내는 문자열을 반환하는 표현식입니다. String 또는 (U)Int* 또는 Float*
  • default — 선택 사항입니다. 파싱에 실패했을 때 반환할 기본값입니다. Int64

반환 값

성공하면 Int64 타입의 값을 반환합니다. 실패하면 기본값이 전달된 경우 해당 값을, 그렇지 않으면 0을 반환합니다. Int64

예시

변환 성공

SELECT toInt64OrDefault('-64', CAST('-1', 'Int64'))
-64

변환 실패

SELECT toInt64OrDefault('abc', CAST('-1', 'Int64'))
-1

toInt64OrNull

도입 버전: v1.1

toInt64와 마찬가지로 이 함수는 입력값을 Int64 타입의 값으로 변환하지만, 오류가 발생하는 경우 NULL을 반환합니다.

지원되는 인수:

  • (U)Int*의 문자열 표현.

지원되지 않는 인수(NULL 반환):

  • NaNInf를 포함한 Float* 값의 문자열 표현.
  • SELECT toInt64OrNull('0xc0fe');와 같은 이진수 및 16진수 값의 문자열 표현.
참고

입력값을 Int64의 범위 내에서 표현할 수 없는 경우, 결과에 오버플로 또는 언더플로가 발생합니다. 이는 오류로 처리되지 않습니다.

함께 보기:

구문

toInt64OrNull(x)

인수

  • x — 숫자를 표현하는 String 형식입니다. String

반환 값

변환에 성공하면 Int64 타입의 값을 반환하고, 실패하면 NULL을 반환합니다. Int64 또는 NULL

예시

사용 예시

SELECT
    toInt64OrNull('-64'),
    toInt64OrNull('abc')
FORMAT Vertical
Row 1:
──────
toInt64OrNull('-64'): -64
toInt64OrNull('abc'): \N

toInt64OrZero

도입: v1.1

입력 값을 Int64 타입으로 변환합니다. 이때 오류가 발생하면 0을 반환합니다. toInt64와 유사하지만, 예외를 발생시키는 대신 0을 반환합니다.

함께 보기:

구문

toInt64OrZero(x)

인수

반환 값

변환된 입력값을 반환하며, 변환에 실패하면 0을 반환합니다. Int64

예시

사용 예시

SELECT toInt64OrZero('123')
123

실패한 변환은 0을 반환합니다

SELECT toInt64OrZero('abc')
0

toInt8

도입 버전: v1.1

입력 값을 Int8 타입의 값으로 변환합니다. 오류가 발생하면 예외를 발생시킵니다.

지원되는 인수:

  • 타입이 (U)Int*인 값 또는 해당 문자열 표현.
  • 타입이 Float*인 값.

지원되지 않는 인수:

  • NaNInf를 포함한 Float* 값의 문자열 표현.
  • SELECT toInt8('0xc0fe');와 같은 이진수 및 16진수 값의 문자열 표현.
참고

입력 값을 Int8의 범위 내에서 표현할 수 없으면 결과에서 오버플로 또는 언더플로가 발생합니다. 이는 오류로 간주되지 않습니다. 예: SELECT toInt8(128) == -128;.

참고

이 함수는 0 방향 반올림을 사용하므로, 숫자의 소수 자릿수를 잘라냅니다.

함께 참고:

구문

toInt8(expr)

인수

  • expr — 숫자 또는 숫자의 문자열 표현을 반환하는 식입니다. Expression

반환 값

8비트 정수 값을 반환합니다. Int8

예시

사용 예시

SELECT
    toInt8(-8),
    toInt8(-8.8),
    toInt8('-8')
FORMAT Vertical
Row 1:
──────
toInt8(-8):   -8
toInt8(-8.8): -8
toInt8('-8'): -8

toInt8OrDefault

도입 버전: v21.11

toInt8와 마찬가지로, 이 함수는 입력값을 Int8 타입의 값으로 변환하지만, 오류가 발생한 경우 기본값을 반환합니다. default 값을 인수로 전달하지 않으면, 오류가 발생했을 때 0이 반환됩니다.

구문

toInt8OrDefault(expr[, default])

인자

  • expr — 숫자 또는 숫자 형식의 문자열을 반환하는 식입니다. String 또는 (U)Int* 또는 Float*
  • default — 선택 사항입니다. 파싱에 실패했을 때 반환할 기본값입니다. Int8

반환 값

성공하면 Int8 타입의 값을 반환하고, 실패한 경우에는 전달된 기본값이 있으면 그 값을, 없으면 0을 반환합니다. Int8

예시

변환 성공 예시

SELECT toInt8OrDefault('-8', CAST('-1', 'Int8'))
-8

변환 실패

SELECT toInt8OrDefault('abc', CAST('-1', 'Int8'))
-1

toInt8OrNull

도입 버전: v1.1

toInt8와 마찬가지로, 이 FUNCTION은 입력값을 Int8 타입의 값으로 변환하지만, 오류가 발생한 경우 NULL을 반환합니다.

지원되는 인수:

  • (U)Int*의 문자열 표현.

지원되지 않는 인수(NULL 반환):

  • NaNInf를 포함한 Float* 값의 문자열 표현.
  • 이진수 및 16진수 값의 문자열 표현. 예: SELECT toInt8OrNull('0xc0fe');.
참고

입력값을 Int8의 범위 내에서 표현할 수 없는 경우, 결과에 오버플로 또는 언더플로가 발생합니다. 이는 오류로 간주되지 않습니다.

같이 보기:

구문

toInt8OrNull(x)

인자

  • x — 숫자를 나타내는 String 표현입니다. String

반환 값

변환에 성공하면 Int8 타입의 값을, 실패하면 NULL을 반환합니다. Int8 또는 NULL

예시

사용 예시

SELECT
    toInt8OrNull('-8'),
    toInt8OrNull('abc')
FORMAT Vertical
Row 1:
──────
toInt8OrNull('-8'):  -8
toInt8OrNull('abc'): \N

toInt8OrZero

도입 버전: v1.1

toInt8와 마찬가지로, 이 함수는 입력값을 Int8 타입의 값으로 변환하지만, 오류가 발생하는 경우 0을 반환합니다.

지원되는 인수:

  • (U)Int*의 문자열 표현.

지원되지 않는 인수(0 반환):

  • NaNInf를 포함한 Float* 값의 문자열 표현.
  • 이진수 및 16진수 값의 문자열 표현, 예: SELECT toInt8OrZero('0xc0fe');.
참고

입력값을 Int8의 범위 내에서 표현할 수 없으면 결과에 오버플로우 또는 언더플로우가 발생합니다. 이는 오류로 간주되지 않습니다.

관련 항목:

문법

toInt8OrZero(x)

인수

  • x — 숫자를 나타내는 String 형식의 문자열입니다. String

반환 값

Int8 타입의 값을 반환하며, 변환에 실패한 경우 0을 반환합니다. Int8

예시

사용 예시

SELECT
    toInt8OrZero('8'),
    toInt8OrZero('abc')
FORMAT Vertical
Row 1:
──────
toInt8OrZero('8'): 8
toInt8OrZero('abc'): 0

toInterval

도입 버전: v25.4

숫자 값과 단위 문자열로부터 Interval 값을 생성합니다.

이 함수는 단위를 문자열 인수로 지정하여 서로 다른 유형의 기간(초, 분, 시간, 일, 주, 월, 분기, 년)을 하나의 함수로 일원화하여 생성할 수 있도록 합니다. 단위 문자열은 대소문자를 구분하지 않습니다.

이는 toIntervalSecond, toIntervalMinute, toIntervalDay 등의 타입별 함수를 호출하는 것과 동일하지만, 단위를 문자열 매개변수로 동적으로 지정할 수 있습니다.

구문

toInterval(value, unit)

인수

  • value — 단위의 개수를 나타내는 숫자 값입니다. 임의의 숫자형 데이터일 수 있습니다. Int8 또는 Int16 또는 Int32 또는 Int64 또는 UInt8 또는 UInt16 또는 UInt32 또는 UInt64 또는 Float32 또는 Float64
  • unit — 시간 단위입니다. 상수 문자열이어야 합니다. 유효한 값: 'nanosecond', 'microsecond', 'millisecond', 'second', 'minute', 'hour', 'day', 'week', 'month', 'quarter', 'year'. String

반환 값

지정된 유형의 Interval 값을 반환합니다. 결과 유형은 단위에 따라 IntervalNanosecond, IntervalMicrosecond, IntervalMillisecond, IntervalSecond, IntervalMinute, IntervalHour, IntervalDay, IntervalWeek, IntervalMonth, IntervalQuarter, IntervalYear 중 하나가 됩니다. Interval

예시

서로 다른 단위를 사용하여 Interval 생성

SELECT
    toInterval(5, 'second') AS seconds,
    toInterval(3, 'day') AS days,
    toInterval(2, 'month') AS months
┌─seconds─┬─days─┬─months─┐
│ 5       │ 3    │ 2      │
└─────────┴──────┴────────┘

날짜 연산에 interval을 사용합니다

SELECT
    now() AS current_time,
    now() + toInterval(1, 'hour') AS one_hour_later,
    now() - toInterval(7, 'day') AS week_ago
┌─────────current_time─┬──one_hour_later─────┬────────────week_ago─┐
│ 2025-01-04 10:30:00  │ 2025-01-04 11:30:00 │ 2024-12-28 10:30:00 │
└──────────────────────┴─────────────────────┴─────────────────────┘

동적 인터벌 생성

SELECT toDate('2025-01-01') + toInterval(number, 'day') AS dates
FROM numbers(5)
┌──────dates─┐
│ 2025-01-01 │
│ 2025-01-02 │
│ 2025-01-03 │
│ 2025-01-04 │
│ 2025-01-05 │
└────────────┘

toIntervalDay

도입: v1.1

IntervalDay 데이터 타입의 n일 간격(interval)을 반환합니다.

구문

toIntervalDay(n)

인수

  • n — 일 수. 정수, 해당 정수의 문자열 표현 또는 부동 소수점 수입니다. (U)Int* 또는 Float* 또는 String

반환 값

n일 간격(interval)을 반환합니다. Interval

예시

사용 예시

WITH
    toDate('2025-06-15') AS date,
    toIntervalDay(5) AS interval_to_days
SELECT date + interval_to_days AS result
┌─────result─┐
│ 2025-06-20 │
└────────────┘

toIntervalHour

도입 버전: v1.1

데이터 타입 IntervalHourn시간 길이 구간(interval)을 반환합니다.

구문

toIntervalHour(n)

인수

  • n — 시간 수. 정수 또는 해당 값의 문자열 표현, 그리고 부동 소수점 수입니다. Int* 또는 UInt* 또는 Float* 또는 String

반환 값

n시간의 interval을 반환합니다. Interval

예시

사용 예시

WITH
    toDate('2025-06-15') AS date,
    toIntervalHour(12) AS interval_to_hours
SELECT date + interval_to_hours AS result
┌──────────────result─┐
│ 2025-06-15 12:00:00 │
└─────────────────────┘

toIntervalMicrosecond

도입 버전: v22.6

데이터 타입 IntervalMicrosecondn 마이크로초 길이 간격(interval)을 반환합니다.

구문

toIntervalMicrosecond(n)

인수(Arguments)

반환 값

n 마이크로초에 해당하는 interval을 반환합니다. Interval

예시(Examples)

사용 예시(Usage example)

WITH
    toDateTime('2025-06-15') AS date,
    toIntervalMicrosecond(30) AS interval_to_microseconds
SELECT date + interval_to_microseconds AS result
┌─────────────────────result─┐
│ 2025-06-15 00:00:00.000030 │
└────────────────────────────┘

toIntervalMillisecond

도입 버전: v22.6

n 밀리초 길이의 IntervalMillisecond 데이터 타입 interval을 반환합니다.

문법

toIntervalMillisecond(n)

인자

반환 값

n 밀리초 구간을 나타내는 Interval 값을 반환합니다.

예시

사용 예시

WITH
    toDateTime('2025-06-15') AS date,
    toIntervalMillisecond(30) AS interval_to_milliseconds
SELECT date + interval_to_milliseconds AS result
┌──────────────────result─┐
│ 2025-06-15 00:00:00.030 │
└─────────────────────────┘

toIntervalMinute

도입 버전: v1.1

데이터 타입 IntervalMinute을(를) 갖는 n분 간격을 반환합니다.

문법

toIntervalMinute(n)

인수

  • n — 분(minute) 수. 정수, 그에 해당하는 문자열 표현, 또는 부동 소수점 수. (U)Int* 또는 Float* 또는 String

반환 값

n분 길이의 Interval 값을 반환합니다. Interval

예시

사용 예시

WITH
    toDate('2025-06-15') AS date,
    toIntervalMinute(12) AS interval_to_minutes
SELECT date + interval_to_minutes AS result
┌──────────────result─┐
│ 2025-06-15 00:12:00 │
└─────────────────────┘

toIntervalMonth

도입 버전: v1.1

데이터 타입 IntervalMonthn개월 길이 interval을 반환합니다.

구문

toIntervalMonth(n)

인수

반환 값

n개월의 Interval을 반환합니다. Interval

예시

사용 예시

WITH
    toDate('2025-06-15') AS date,
    toIntervalMonth(1) AS interval_to_month
SELECT date + interval_to_month AS result
┌─────result─┐
│ 2025-07-15 │
└────────────┘

toIntervalNanosecond

도입된 버전: v22.6

IntervalNanosecond 데이터 타입의 n 나노초 간격(interval)을 반환합니다.

구문

toIntervalNanosecond(n)

인수

반환 값

n 나노초의 interval을 반환합니다. Interval

예시

사용 예시

WITH
    toDateTime('2025-06-15') AS date,
    toIntervalNanosecond(30) AS interval_to_nanoseconds
SELECT date + interval_to_nanoseconds AS result
┌────────────────────────result─┐
│ 2025-06-15 00:00:00.000000030 │
└───────────────────────────────┘

toIntervalQuarter

도입된 버전: v1.1

IntervalQuarter 데이터 타입의 n개 분기 구간(interval)을 반환합니다.

구문

toIntervalQuarter(n)

인수

반환 값

n개의 분기로 구성된 Interval을 반환합니다. Interval

예시

사용 예시

WITH
    toDate('2025-06-15') AS date,
    toIntervalQuarter(1) AS interval_to_quarter
SELECT date + interval_to_quarter AS result
┌─────result─┐
│ 2025-09-15 │
└────────────┘

toIntervalSecond

도입 버전: v1.1

데이터 타입 IntervalSecondn초 길이 간격을 반환합니다.

구문

toIntervalSecond(n)

인수

  • n — 초 단위 값입니다. 정수 또는 그 값의 문자열 표현, 그리고 부동 소수점 숫자를 허용합니다. (U)Int* 또는 Float* 또는 String

반환 값

n초 길이의 interval을 반환합니다. Interval

예시

사용 예시

WITH
    toDate('2025-06-15') AS date,
    toIntervalSecond(30) AS interval_to_seconds
SELECT date + interval_to_seconds AS result
┌──────────────result─┐
│ 2025-06-15 00:00:30 │
└─────────────────────┘

toIntervalWeek

도입된 버전: v1.1

IntervalWeek 데이터 타입의 n주의 간격을 반환합니다.

구문

toIntervalWeek(n)

인수

반환 값

n주에 해당하는 interval을 반환합니다. Interval

예시

사용 예시

WITH
    toDate('2025-06-15') AS date,
    toIntervalWeek(1) AS interval_to_week
SELECT date + interval_to_week AS result
┌─────result─┐
│ 2025-06-22 │
└────────────┘

toIntervalYear

도입 버전: v1.1

IntervalYear 데이터 타입의 n년 interval 값을 반환합니다.

구문

toIntervalYear(n)

인수

반환 값

n년에 해당하는 간격을 반환합니다. Interval

예시

사용 예시

WITH
    toDate('2024-06-15') AS date,
    toIntervalYear(1) AS interval_to_year
SELECT date + interval_to_year AS result
┌─────result─┐
│ 2025-06-15 │
└────────────┘

toLowCardinality

도입된 버전: v18.12

입력 인수를 동일한 데이터 타입의 LowCardinality 버전으로 변환합니다.

LowCardinality 데이터 타입에서 일반 데이터 타입으로 변환하려면 CAST FUNCTION을 사용하십시오. 예: CAST(x AS String).

구문

toLowCardinality(expr)

인수

반환 값

입력 값을 LowCardinality 데이터 타입으로 변환하여 반환합니다. LowCardinality

예시

사용 예시

SELECT toLowCardinality('1')
┌─toLowCardinality('1')─┐
│ 1                     │
└───────────────────────┘

toString

도입 버전: v1.1

값을 문자열 형태로 변환합니다. DateTime 인수인 경우, 함수는 시간대 이름을 지정하는 두 번째 String 인수를 받을 수 있습니다.

구문

toString(value[, timezone])

인자

  • value — 문자열로 변환할 값. Any
  • timezone — 선택적 인자입니다. DateTime 변환에 사용할 타임존 이름입니다. String

반환 값

입력값의 문자열 표현을 반환합니다. String

예시

사용 예시

SELECT
    now() AS ts,
    time_zone,
    toString(ts, time_zone) AS str_tz_datetime
FROM system.time_zones
WHERE time_zone LIKE 'Europe%'
LIMIT 10
┌──────────────────ts─┬─time_zone─────────┬─str_tz_datetime─────┐
│ 2023-09-08 19:14:59 │ Europe/Amsterdam  │ 2023-09-08 21:14:59 │
│ 2023-09-08 19:14:59 │ Europe/Andorra    │ 2023-09-08 21:14:59 │
│ 2023-09-08 19:14:59 │ Europe/Astrakhan  │ 2023-09-08 23:14:59 │
│ 2023-09-08 19:14:59 │ Europe/Athens     │ 2023-09-08 22:14:59 │
│ 2023-09-08 19:14:59 │ Europe/Belfast    │ 2023-09-08 20:14:59 │
└─────────────────────┴───────────────────┴─────────────────────┘

toStringCutToZero

도입 버전: v1.1

String 또는 FixedString 인수를 받아, 첫 번째 널 바이트에서 잘라진 원본 문자열의 복사본인 String을 반환합니다.

널 바이트(\0)는 문자열 종료 문자로 간주됩니다. 이 FUNCTION은 널 바이트가 의미 있는 내용의 끝을 나타내는 C 스타일 문자열이나 이진 데이터를 처리할 때 유용합니다.

문법

toStringCutToZero(s)

인수

반환 값

첫 번째 null 바이트 이전의 문자로 구성된 String을 반환합니다. String

예시

사용 예시

SELECT
    toStringCutToZero('hello'),
    toStringCutToZero('hello\0world')
┌─toStringCutToZero('hello')─┬─toStringCutToZero('hello\\0world')─┐
│ hello                      │ hello                             │
└────────────────────────────┴───────────────────────────────────┘

toTime

도입된 버전: v1.1

입력 값을 Time 데이터 타입으로 변환합니다. String, FixedString, DateTime 또는 자정 이후 경과한 초를 나타내는 숫자형 타입에서의 변환을 지원합니다.

구문

toTime(x)

인수

반환 값

변환된 값을 반환합니다. Time

예제

String을 Time으로 변환

SELECT toTime('14:30:25')
14:30:25

DateTime을 Time으로 변환

SELECT toTime(toDateTime('2025-04-15 14:30:25'))
14:30:25

정수를 Time으로 변환

SELECT toTime(52225)
14:30:25

toTime64

도입 버전: v25.6

입력 값을 Time64 타입으로 변환합니다. String, FixedString, DateTime64 또는 자정 이후 경과 시간을 마이크로초 단위로 나타내는 숫자형 타입에서의 변환을 지원합니다. 시간 값을 마이크로초 단위 정밀도로 표현합니다.

구문

toTime64(x)

인수

반환 값

마이크로초 정밀도로 변환된 입력 값을 반환합니다. Time64(6)

예제

String에서 Time64로의 변환

SELECT toTime64('14:30:25.123456')
14:30:25.123456

DateTime64를 Time64로 변환

SELECT toTime64(toDateTime64('2025-04-15 14:30:25.123456', 6))
14:30:25.123456

정수를 Time64로 변환

SELECT toTime64(52225123456)
14:30:25.123456

toTime64OrNull

도입된 버전: v25.6

입력 값을 Time64 타입의 값으로 변환하지만, 오류가 발생하는 경우 NULL을 반환합니다. toTime64와 동일하지만, 변환 오류 시 예외를 발생시키는 대신 NULL을 반환합니다.

관련 항목:

문법

toTime64OrNull(x)

인수

  • x — 초 이하 단위까지의 정밀도를 갖는 시간의 문자열 표현입니다. String

반환 값

성공하면 Time64 값을, 그렇지 않으면 NULL을 반환합니다. Time64 또는 NULL

예시

사용 예시

SELECT toTime64OrNull('12:30:45.123'), toTime64OrNull('invalid')
┌─toTime64OrNull('12:30:45.123')─┬─toTime64OrNull('invalid')─┐
│                   12:30:45.123 │                      ᴺᵁᴸᴸ │
└────────────────────────────────┴───────────────────────────┘

toTime64OrZero

도입 버전: v25.6

입력 값을 Time64 타입 값으로 변환하지만, 오류가 발생하는 경우 00:00:00.000을 반환합니다. toTime64와 비슷하지만, 변환 오류 시 예외를 발생시키는 대신 00:00:00.000을 반환합니다.

구문

toTime64OrZero(x)

인수

  • x — 초 단위 이하(소수점 이하) 정밀도를 포함한 시간의 문자열 표현입니다. String

반환 값

성공하면 Time64 값을, 그렇지 않으면 00:00:00.000을 반환합니다. Time64

예시

사용 예시

SELECT toTime64OrZero('12:30:45.123'), toTime64OrZero('invalid')
┌─toTime64OrZero('12:30:45.123')─┬─toTime64OrZero('invalid')─┐
│                   12:30:45.123 │             00:00:00.000 │
└────────────────────────────────┴──────────────────────────┘

toTimeOrNull

도입 버전: v1.1

입력 값을 Time 타입 값으로 변환하지만, 오류가 발생하면 NULL을 반환합니다. toTime와 동일하지만, 변환 오류 시 예외를 던지는 대신 NULL을 반환합니다.

함께 보기:

구문

toTimeOrNull(x)

인수

  • x — 시간을 나타내는 문자열입니다. String

반환 값

성공하면 Time 값을 반환하고, 그렇지 않으면 NULL을 반환합니다. Time 또는 NULL

예시

사용 예시

SELECT toTimeOrNull('12:30:45'), toTimeOrNull('invalid')
┌─toTimeOrNull('12:30:45')─┬─toTimeOrNull('invalid')─┐
│                 12:30:45 │                    ᴺᵁᴸᴸ │
└──────────────────────────┴─────────────────────────┘

toTimeOrZero

도입 버전: v1.1

입력 값을 Time 타입의 값으로 변환하지만, 오류가 발생하면 00:00:00을 반환합니다. toTime과 동일하지만, 변환 오류 시 예외를 발생시키는 대신 00:00:00을 반환합니다.

구문

toTimeOrZero(x)

인수

  • x — 시간을 나타내는 문자열 표현. String

반환 값

성공하면 Time 값을 반환하고, 그렇지 않으면 00:00:00을 반환합니다. Time

예시

사용 예시

SELECT toTimeOrZero('12:30:45'), toTimeOrZero('invalid')
┌─toTimeOrZero('12:30:45')─┬─toTimeOrZero('invalid')─┐
│                 12:30:45 │                00:00:00 │
└──────────────────────────┴─────────────────────────┘

toUInt128

도입 버전: v1.1

입력 값을 UInt128 타입의 값으로 변환합니다. 오류가 발생하는 경우 예외를 발생시킵니다. 함수는 0 방향으로 반올림을 수행하므로 숫자의 소수 자릿수를 잘라냅니다.

지원되는 인자:

  • (U)Int* 타입 값 또는 해당 타입의 문자열 표현.
  • Float* 타입 값.

지원되지 않는 인자:

  • NaN, Inf를 포함한 Float* 값의 문자열 표현.
  • 예: SELECT toUInt128('0xc0fe');와 같은 이진 및 16진수 값의 문자열 표현.
참고

입력 값을 UInt128 범위 내에서 표현할 수 없는 경우, 결과에 오버플로 또는 언더플로가 발생합니다. 이는 오류로 간주되지 않습니다.

함께 보기:

구문

toUInt128(expr)

인수

  • expr — 숫자 또는 숫자의 문자열 표현을 반환하는 표현식입니다. Expression

반환 값

128비트 부호 없는 정수 값을 반환합니다. UInt128

예시

사용 예시

SELECT
    toUInt128(128),
    toUInt128(128.8),
    toUInt128('128')
FORMAT Vertical
Row 1:
──────
toUInt128(128):   128
toUInt128(128.8): 128
toUInt128('128'): 128

toUInt128OrDefault

도입 버전: v21.11

toUInt128과 마찬가지로, 이 FUNCTION은 입력값을 UInt128 타입의 값으로 변환하지만, 오류가 발생한 경우 기본값을 반환합니다. default 값을 전달하지 않으면, 오류가 발생할 때 0이 반환됩니다.

구문

toUInt128OrDefault(expr[, default])

인수

  • expr — 숫자 또는 숫자의 문자열 표현을 반환하는 식입니다. String 또는 (U)Int* 또는 Float*
  • default — 선택 사항입니다. 파싱에 실패했을 때 반환할 기본값입니다. UInt128

반환 값

성공하면 UInt128 타입의 값을 반환하고, 실패하면 기본값이 전달된 경우 해당 값을, 전달되지 않은 경우 0을 반환합니다.

예시

변환 성공 예

SELECT toUInt128OrDefault('128', CAST('0', 'UInt128'))
128

변환 실패

SELECT toUInt128OrDefault('abc', CAST('0', 'UInt128'))
0

toUInt128OrNull

도입된 버전: v21.6

toUInt128과 같이, 이 FUNCTION은 입력값을 UInt128 타입의 값으로 변환하지만, 오류가 발생한 경우 NULL을 반환합니다.

지원되는 인수:

  • (U)Int*의 문자열 표현.

지원되지 않는 인수(NULL 반환):

  • NaNInf를 포함한 Float* 값의 문자열 표현.
  • SELECT toUInt128OrNull('0xc0fe');와 같은 이진수 및 16진수 값의 문자열 표현.
참고

입력값을 UInt128의 범위 내에서 표현할 수 없는 경우, 결과에 오버플로 또는 언더플로가 발생합니다. 이는 오류로 간주되지 않습니다.

함께 보기:

문법

toUInt128OrNull(x)

인수

  • x — 숫자를 나타내는 String 형식의 값. String

반환 값

변환에 성공하면 UInt128 타입의 값을 반환하고, 실패하면 NULL을 반환합니다. UInt128 또는 NULL

예제

사용 예제

SELECT
    toUInt128OrNull('128'),
    toUInt128OrNull('abc')
FORMAT Vertical
Row 1:
──────
toUInt128OrNull('128'): 128
toUInt128OrNull('abc'): \N

toUInt128OrZero

도입 버전: v1.1

toUInt128와 마찬가지로, 이 함수는 입력 값을 UInt128 타입의 값으로 변환하지만, 오류가 발생하는 경우 0을 반환합니다.

지원되는 인수:

  • (U)Int*의 문자열 표현.

지원되지 않는 인수(0 반환):

  • NaNInf를 포함한 Float* 값의 문자열 표현.
  • 예: SELECT toUInt128OrZero('0xc0fe');와 같은 이진수 및 16진수 값의 문자열 표현.
참고

입력 값을 UInt128의 범위 내에서 표현할 수 없으면 결과에 오버플로우 또는 언더플로우가 발생합니다. 이는 오류로 간주되지 않습니다.

함께 보기:

구문

toUInt128OrZero(x)

인수

  • x — 숫자를 나타내는 String 표현입니다. String

반환 값

UInt128 타입의 값을 반환하며, 변환에 실패한 경우 0을 반환합니다. UInt128

예시

사용 예시

SELECT
    toUInt128OrZero('128'),
    toUInt128OrZero('abc')
FORMAT Vertical
Row 1:
──────
toUInt128OrZero('128'): 128
toUInt128OrZero('abc'): 0

toUInt16

도입 버전: v1.1

입력 값을 UInt16 타입의 값으로 변환합니다. 오류가 발생하면 예외를 발생시킵니다.

지원되는 인수:

  • (U)Int* 타입의 값 또는 해당 문자열 표현.
  • Float* 타입의 값.

지원되지 않는 인수:

  • NaNInf를 포함한 Float* 값의 문자열 표현.
  • SELECT toUInt16('0xc0fe');와 같은 이진수 및 16진수 값의 문자열 표현.
참고

입력 값을 UInt16의 범위 내에서 표현할 수 없으면 결과에 오버플로 또는 언더플로가 발생합니다. 이는 오류로 간주되지 않습니다. 예: SELECT toUInt16(65536) == 0;.

참고

이 함수는 숫자의 소수 자릿수를 잘라내는 방식인 0 방향 반올림(rounding towards zero)을 사용합니다.

관련 항목:

구문

toUInt16(expr)

인수

  • expr — 숫자 또는 숫자를 나타내는 문자열을 반환하는 식입니다. Expression

반환 값

16비트 부호 없는 정수 값을 반환합니다. UInt16

예시

사용 예시

SELECT
    toUInt16(16),
    toUInt16(16.16),
    toUInt16('16')
FORMAT Vertical
Row 1:
──────
toUInt16(16):    16
toUInt16(16.16): 16
toUInt16('16'):  16

toUInt16OrDefault

도입 버전: v21.11

toUInt16과 유사하게, 이 FUNCTION은 입력값을 UInt16 타입의 값으로 변환하지만 오류가 발생한 경우 기본값을 반환합니다. default 값을 전달하지 않으면 오류가 발생했을 때 0이 반환됩니다.

구문

toUInt16OrDefault(expr[, default])

인수

  • expr — 숫자 또는 숫자의 문자열 표현을 반환하는 식입니다. String 또는 (U)Int* 또는 Float*
  • default — 선택 사항입니다. 파싱에 실패했을 때 반환할 기본값입니다. UInt16

반환 값

성공하면 UInt16 타입의 값을 반환하고, 그렇지 않으면 전달된 기본값이 있으면 해당 값을, 없으면 0을 반환합니다. UInt16

예시

성공적인 변환

SELECT toUInt16OrDefault('16', CAST('0', 'UInt16'))
16

형변환 실패

SELECT toUInt16OrDefault('abc', CAST('0', 'UInt16'))
0

toUInt16OrNull

도입 버전: v1.1

toUInt16과(와) 마찬가지로, 이 함수는 입력값을 UInt16 타입 값으로 변환하지만 오류가 발생하는 경우 NULL을 반환합니다.

지원되는 인수:

  • (U)Int8/16/32/128/256의 문자열 표현.

지원되지 않는 인수( NULL을 반환):

  • NaNInf를 포함한 Float* 값의 문자열 표현.
  • 예: SELECT toUInt16OrNull('0xc0fe');와 같은 이진수 및 16진수 값의 문자열 표현.
참고

입력값을 UInt16의 범위 내에서 표현할 수 없으면 결과에 오버플로우 또는 언더플로우가 발생합니다. 이는 오류로 간주되지 않습니다.

함께 보기:

구문

toUInt16OrNull(x)

인수

  • x — 숫자를 나타내는 String 값입니다. String

반환 값

변환이 성공하면 UInt16 타입의 값을 반환하고, 그렇지 않으면 NULL을 반환합니다. UInt16 또는 NULL

예시

사용 예시

SELECT
    toUInt16OrNull('16'),
    toUInt16OrNull('abc')
FORMAT Vertical
Row 1:
──────
toUInt16OrNull('16'):  16
toUInt16OrNull('abc'): \N

toUInt16OrZero

도입 버전: v1.1

toUInt16과 마찬가지로 이 함수는 입력값을 UInt16 타입의 값으로 변환하지만, 오류가 발생하는 경우 0을 반환합니다.

지원되는 인수:

  • (U)Int8/16/32/128/256의 문자열 표현입니다.

지원되지 않는 인수(0 반환):

  • NaNInf를 포함한 Float* 값의 문자열 표현입니다.
  • 2진수 및 16진수 값의 문자열 표현입니다(예: SELECT toUInt16OrZero('0xc0fe');).
참고

입력값을 UInt16의 범위 내에서 표현할 수 없는 경우, 결과에 오버플로우 또는 언더플로우가 발생합니다. 이는 오류로 간주되지 않습니다.

함께 보기:

문법

toUInt16OrZero(x)

인수

  • x — 숫자를 나타내는 String 형식의 값입니다. String

반환 값

변환에 성공하면 UInt16 타입의 값을, 그렇지 않으면 0을 반환합니다. UInt16

예시

사용 예시

SELECT
    toUInt16OrZero('16'),
    toUInt16OrZero('abc')
FORMAT Vertical
Row 1:
──────
toUInt16OrZero('16'):  16
toUInt16OrZero('abc'): 0

toUInt256

도입 버전: v1.1

입력 값을 UInt256 타입의 값으로 변환합니다. 오류가 발생하면 예외를 발생시킵니다. 이 함수는 0에 가까운 방향으로 반올림하므로 숫자의 소수 자릿수를 잘라냅니다.

지원되는 인자:

  • (U)Int* 타입의 값 또는 해당 문자열 표현.
  • Float* 타입의 값.

지원되지 않는 인자:

  • NaNInf를 포함한 Float* 값의 문자열 표현.
  • SELECT toUInt256('0xc0fe');와 같은 2진수 및 16진수 값의 문자열 표현.
참고

입력 값을 UInt256의 범위 내에서 표현할 수 없는 경우 결과에 오버플로나 언더플로가 발생합니다. 이는 오류로 간주되지 않습니다.

함께 보기:

구문

toUInt256(expr)

인수

  • expr — 숫자 또는 숫자를 나타내는 문자열을 반환하는 표현식입니다. Expression

반환 값

256비트 부호 없는 정수 값을 반환합니다. UInt256

예제

사용 예제

SELECT
    toUInt256(256),
    toUInt256(256.256),
    toUInt256('256')
FORMAT Vertical
Row 1:
──────
toUInt256(256):     256
toUInt256(256.256): 256
toUInt256('256'):   256

toUInt256OrDefault

도입 버전: v21.11

toUInt256과 마찬가지로 이 함수는 입력값을 UInt256 자료형의 값으로 변환하지만, 오류가 발생하면 기본값을 반환합니다. default 값이 전달되지 않으면, 오류가 발생했을 때 0이 반환됩니다.

구문

toUInt256OrDefault(expr[, default])

인자

  • expr — 숫자 또는 숫자의 문자열 표현을 반환하는 표현식입니다. String 또는 (U)Int* 또는 Float*
  • default — 선택 사항입니다. 파싱에 실패했을 때 반환할 기본값입니다. UInt256

반환 값

성공하면 UInt256 타입의 값을 반환하고, 그렇지 않으면 전달된 기본값이 있으면 해당 값을, 없으면 0을 반환합니다. UInt256

예시

성공적인 변환

SELECT toUInt256OrDefault('-256', CAST('0', 'UInt256'))
0

형 변환 실패

SELECT toUInt256OrDefault('abc', CAST('0', 'UInt256'))
0

toUInt256OrNull

도입 버전: v20.8

toUInt256와 같이, 이 FUNCTION은 입력값을 UInt256 타입으로 변환하지만, 오류가 발생하면 NULL을 반환합니다.

지원되는 인수:

  • (U)Int*의 문자열 표현.

지원되지 않는 인수(NULL 반환):

  • NaNInf를 포함한 Float* 값의 문자열 표현.
  • SELECT toUInt256OrNull('0xc0fe');와 같은 이진수 및 16진수 값의 문자열 표현.
참고

입력값을 UInt256의 범위 내에서 표현할 수 없는 경우, 결과에 오버플로우 또는 언더플로우가 발생합니다. 이는 오류로 간주되지 않습니다.

함께 보기:

문법

toUInt256OrNull(x)

인수

  • x — 숫자를 나타내는 String 형식의 문자열입니다. String

반환 값

변환이 성공하면 UInt256 타입의 값을 반환하고, 실패하면 NULL을 반환합니다. UInt256 또는 NULL

예제

사용 예제

SELECT
    toUInt256OrNull('256'),
    toUInt256OrNull('abc')
FORMAT Vertical
Row 1:
──────
toUInt256OrNull('256'): 256
toUInt256OrNull('abc'): \N

toUInt256OrZero

도입 버전: v20.8

toUInt256과 마찬가지로, 이 함수는 입력값을 UInt256 타입의 값으로 변환하지만, 오류가 발생하는 경우 0을 반환합니다.

지원되는 인수:

  • (U)Int*의 문자열 표현.

지원되지 않는 인수(0 반환):

  • NaNInf를 포함한 Float* 값의 문자열 표현.
  • 예: SELECT toUInt256OrZero('0xc0fe');와 같은 이진수 및 16진수 값의 문자열 표현.
참고

입력값을 UInt256의 범위 내에서 표현할 수 없는 경우, 결과에 오버플로 또는 언더플로가 발생합니다. 이는 오류로 간주되지 않습니다.

관련 항목:

문법

toUInt256OrZero(x)

인수(Arguments)

  • x — 숫자를 나타내는 문자열. String

반환 값(Returned value)

변환이 성공하면 UInt256 타입의 값을, 실패하면 0을 반환합니다. UInt256

예시(Examples)

사용 예시(Usage example)

SELECT
    toUInt256OrZero('256'),
    toUInt256OrZero('abc')
FORMAT Vertical
Row 1:
──────
toUInt256OrZero('256'): 256
toUInt256OrZero('abc'): 0

toUInt32

도입 버전: v1.1

입력값을 UInt32 타입의 값으로 변환합니다. 오류가 발생하면 예외를 발생시킵니다.

지원되는 인수:

  • (U)Int* 타입의 값 또는 문자열 표현.
  • Float* 타입의 값.

지원되지 않는 인수:

  • NaNInf를 포함한 Float* 값의 문자열 표현.
  • SELECT toUInt32('0xc0fe');와 같은 2진수 및 16진수 값의 문자열 표현.
참고

입력값을 UInt32의 범위 내에서 표현할 수 없는 경우, 결과값은 오버플로 또는 언더플로가 발생합니다. 이는 오류로 간주되지 않습니다. 예: SELECT toUInt32(4294967296) == 0;

참고

이 함수는 0으로의 반올림을 사용하며, 이는 숫자의 소수 부분을 잘라낸다는 의미입니다.

함께 보기:

구문

toUInt32(expr)

인수

  • expr — 숫자 또는 숫자의 문자열 표현을 반환하는 표현식입니다. Expression

반환 값

32비트 부호 없는 정수 값인 UInt32를 반환합니다.

예제

사용 예제

SELECT
    toUInt32(32),
    toUInt32(32.32),
    toUInt32('32')
FORMAT Vertical
Row 1:
──────
toUInt32(32):    32
toUInt32(32.32): 32
toUInt32('32'):  32

toUInt32OrDefault

도입 버전: v21.11

toUInt32와 마찬가지로, 이 FUNCTION은 입력값을 UInt32 타입의 값으로 변환하되, 오류가 발생하면 기본값을 반환합니다. default 값이 전달되지 않으면 오류가 발생했을 때 0이 반환됩니다.

구문

toUInt32OrDefault(expr[, default])

인수

  • expr — 숫자 또는 숫자를 문자열로 표현한 값을 반환하는 표현식입니다. String 또는 (U)Int* 또는 Float*
  • default — 선택 사항입니다. 파싱에 실패했을 때 반환할 기본값입니다. UInt32

반환 값

성공하면 UInt32 타입의 값을 반환하며, 실패한 경우 default 값이 전달되었으면 해당 값을, 그렇지 않으면 0을 반환합니다. UInt32

예시

성공적인 변환

SELECT toUInt32OrDefault('32', CAST('0', 'UInt32'))
32

변환 실패

SELECT toUInt32OrDefault('abc', CAST('0', 'UInt32'))
0

toUInt32OrNull

도입된 버전: v1.1

toUInt32와 같이, 이 FUNCTION은 입력 값을 UInt32 타입의 값으로 변환하지만, 오류가 발생하는 경우 NULL을 반환합니다.

지원되는 인수:

  • (U)Int8/16/32/128/256의 문자열 표현

지원되지 않는 인수 (NULL 반환):

  • NaNInf를 포함한 Float* 값의 문자열 표현
  • 예: SELECT toUInt32OrNull('0xc0fe');와 같은 2진수 및 16진수 값의 문자열 표현
참고

입력 값을 UInt32의 범위 내에서 표현할 수 없으면 결과에서 오버플로 또는 언더플로가 발생합니다. 이는 오류로 간주되지 않습니다.

관련 내용:

구문

toUInt32OrNull(x)

인수

  • x — 숫자를 나타내는 String 표현입니다. String

반환 값

변환이 성공하면 UInt32 타입의 값을 반환하고, 실패하면 NULL을 반환합니다. UInt32 또는 NULL

예시

사용 예시

SELECT
    toUInt32OrNull('32'),
    toUInt32OrNull('abc')
FORMAT Vertical
Row 1:
──────
toUInt32OrNull('32'):  32
toUInt32OrNull('abc'): \N

toUInt32OrZero

도입 버전: v1.1

toUInt32와 유사하게, 이 함수는 입력값을 UInt32 형식의 값으로 변환하지만, 오류가 발생한 경우 0을 반환합니다.

지원되는 인수:

  • (U)Int8/16/32/128/256의 문자열 표현.

지원되지 않는 인수 (0 반환):

  • NaNInf를 포함한 Float* 값의 문자열 표현.
  • 이진수 및 16진수 값의 문자열 표현. 예: SELECT toUInt32OrZero('0xc0fe');.
참고

입력값을 UInt32 범위 내에서 표현할 수 없으면 결과에서 오버플로 또는 언더플로가 발생합니다. 이는 오류로 간주되지 않습니다.

같이 보기:

구문

toUInt32OrZero(x)

인수

  • x — 문자열로 표현된 숫자입니다. String

반환 값

성공적으로 변환되면 UInt32 타입의 값을, 변환에 실패하면 0을 반환합니다. UInt32

예시

사용 예시

SELECT
    toUInt32OrZero('32'),
    toUInt32OrZero('abc')
FORMAT Vertical
Row 1:
──────
toUInt32OrZero('32'):  32
toUInt32OrZero('abc'): 0

toUInt64

도입 버전: v1.1

입력 값을 UInt64 타입의 값으로 변환합니다. 오류가 발생하면 예외를 발생시킵니다.

지원되는 인수:

  • (U)Int* 타입의 값 또는 문자열 표현.
  • Float* 타입의 값.

지원되지 않는 타입:

  • NaNInf를 포함한 Float* 값의 문자열 표현.
  • SELECT toUInt64('0xc0fe');와 같은 이진수 및 16진수 값의 문자열 표현.
참고

입력 값을 UInt64의 범위 내에서 표현할 수 없으면, 결과에 오버플로 또는 언더플로가 발생합니다. 이는 오류로 간주되지 않습니다. 예: SELECT toUInt64(18446744073709551616) == 0;

참고

이 함수는 0으로의 반올림(rounding towards zero)을 사용하므로, 숫자의 소수 자릿수를 버립니다.

함께 보기:

Syntax

toUInt64(expr)

인자

  • expr — 숫자 또는 숫자를 나타내는 문자열을 반환하는 표현식입니다. Expression

반환 값

64비트 부호 없는 정수 값을 반환합니다. UInt64

예시

사용 예시

SELECT
    toUInt64(64),
    toUInt64(64.64),
    toUInt64('64')
FORMAT Vertical
Row 1:
──────
toUInt64(64):    64
toUInt64(64.64): 64
toUInt64('64'):  64

toUInt64OrDefault

도입 버전: v21.11

toUInt64와 마찬가지로, 이 FUNCTION은 입력값을 UInt64 타입의 값으로 변환하지만 오류가 발생한 경우 기본값을 반환합니다. default 값이 지정되지 않으면 오류가 발생했을 때 0이 반환됩니다.

문법

toUInt64OrDefault(expr[, default])

인수

  • expr — 숫자 또는 숫자의 문자열 표현을 반환하는 식입니다. String 또는 (U)Int* 또는 Float*
  • default — 선택 사항입니다. 파싱에 실패한 경우 반환할 기본값입니다. UInt64

반환 값

성공한 경우 UInt64 타입의 값을 반환하고, 실패한 경우에는 전달된 기본값을, 기본값이 전달되지 않았다면 0을 반환합니다. UInt64

예시

변환 성공 예

SELECT toUInt64OrDefault('64', CAST('0', 'UInt64'))
64

변환 실패

SELECT toUInt64OrDefault('abc', CAST('0', 'UInt64'))
0

toUInt64OrNull

도입된 버전: v1.1

toUInt64와 마찬가지로 이 FUNCTION은 입력값을 UInt64 타입의 값으로 변환하지만, 오류가 발생하는 경우 NULL을 반환합니다.

지원되는 인수:

  • (U)Int*의 문자열 표현.

지원되지 않는 인수(NULL 반환):

  • NaNInf를 포함한 Float* 값의 문자열 표현.
  • SELECT toUInt64OrNull('0xc0fe');와 같은 이진수 및 16진수 값의 문자열 표현.
참고

입력값을 UInt64의 범위 내에서 표현할 수 없는 경우, 결과에서 오버플로우 또는 언더플로우가 발생합니다. 이는 오류로 간주되지 않습니다.

관련 항목:

구문

toUInt64OrNull(x)

인자

  • x — 숫자의 문자열(String) 표현입니다. String

반환 값

변환에 성공하면 UInt64 타입의 값을, 실패하면 NULL을 반환합니다. UInt64 또는 NULL

예시

사용 예시

SELECT
    toUInt64OrNull('64'),
    toUInt64OrNull('abc')
FORMAT Vertical
Row 1:
──────
toUInt64OrNull('64'):  64
toUInt64OrNull('abc'): \N

toUInt64OrZero

도입 버전: v1.1

toUInt64와 마찬가지로, 이 함수는 입력값을 UInt64 타입의 값으로 변환하지만 오류가 발생하는 경우 0을 반환합니다.

지원되는 인수:

  • (U)Int*의 문자열 표현입니다.

지원되지 않는 인수(0 반환):

  • NaNInf를 포함한 Float* 값의 문자열 표현입니다.
  • SELECT toUInt64OrZero('0xc0fe');와 같은 이진 및 16진수 값의 문자열 표현입니다.
참고

입력값을 UInt64의 범위 내에서 표현할 수 없는 경우 결과에서 오버플로 또는 언더플로가 발생합니다. 이는 오류로 간주되지 않습니다.

관련 항목:

구문

toUInt64OrZero(x)

인수(Arguments)

  • x — 숫자를 문자열로 표현한 값입니다. String

반환 값(Returned value)

변환에 성공하면 UInt64 타입의 값을 반환하고, 실패하면 0을 반환합니다. UInt64

예시(Examples)

사용 예시(Usage example)

SELECT
    toUInt64OrZero('64'),
    toUInt64OrZero('abc')
FORMAT Vertical
Row 1:
──────
toUInt64OrZero('64'):  64
toUInt64OrZero('abc'): 0

toUInt8

도입된 버전: v1.1

입력 값을 UInt8 타입의 값으로 변환합니다. 오류가 발생하면 예외를 던집니다.

지원되는 인수:

  • 타입이 (U)Int*인 값 또는 해당 문자열 표현.
  • 타입이 Float*인 값.

지원되지 않는 인수:

  • NaN, Inf를 포함한 Float* 값의 문자열 표현.
  • SELECT toUInt8('0xc0fe');와 같은 이진수 및 16진수 값의 문자열 표현.
참고

입력 값을 UInt8의 범위 내에서 표현할 수 없으면 결과에 오버플로 또는 언더플로가 발생합니다. 이는 오류로 간주되지 않습니다. 예: SELECT toUInt8(256) == 0;.

참고

이 함수는 0 방향으로 반올림을 사용합니다. 즉, 수의 소수 부분을 잘라냅니다.

함께 보기:

Syntax

toUInt8(expr)

인자

  • expr — 숫자 또는 숫자를 문자열로 표현한 값을 반환하는 표현식입니다. Expression

반환 값

8비트 부호 없는 정수 값UInt8을 반환합니다.

예시

사용 예시

SELECT
    toUInt8(8),
    toUInt8(8.8),
    toUInt8('8')
FORMAT Vertical
Row 1:
──────
toUInt8(8):   8
toUInt8(8.8): 8
toUInt8('8'): 8

toUInt8OrDefault

도입 버전: v21.11

toUInt8와 마찬가지로, 이 함수는 입력값을 UInt8 타입의 값으로 변환하지만, 오류가 발생한 경우 기본값을 반환합니다. default 값이 전달되지 않으면, 오류가 발생한 경우 0이 반환됩니다.

구문

toUInt8OrDefault(expr[, default])

인수

  • expr — 숫자 또는 숫자를 나타내는 문자열을 반환하는 표현식입니다. String 또는 (U)Int* 또는 Float*
  • default — 선택 사항입니다. 파싱에 실패했을 때 반환할 기본값입니다. UInt8

반환 값

성공한 경우 UInt8 타입의 값을 반환하고, 실패한 경우 전달된 기본값이 있으면 해당 값을, 없으면 0을 반환합니다. UInt8

예시

성공적인 변환

SELECT toUInt8OrDefault('8', CAST('0', 'UInt8'))
8

변환 실패

SELECT toUInt8OrDefault('abc', CAST('0', 'UInt8'))
0

toUInt8OrNull

도입된 버전: v1.1

toUInt8와 마찬가지로 이 함수는 입력 값을 UInt8 타입의 값으로 변환하지만, 오류가 발생하면 NULL을 반환합니다.

지원되는 인수:

  • (U)Int8/16/32/128/256의 문자열 표현.

지원되지 않는 인수(NULL 반환):

  • NaNInf를 포함한 일반 Float* 값의 문자열 표현.
  • 이진수 및 16진수 값의 문자열 표현, 예: SELECT toUInt8OrNull('0xc0fe');.
참고

입력 값을 UInt8의 범위 내에서 표현할 수 없는 경우, 결과에 오버플로우 또는 언더플로우가 발생합니다. 이는 오류로 간주되지 않습니다.

함께 보기:

구문

toUInt8OrNull(x)

인수

  • x — 숫자를 String 형식으로 표현한 값입니다. String

반환 값

변환에 성공하면 UInt8 타입의 값을, 실패하면 NULL을 반환합니다. UInt8 또는 NULL

예시

사용 예시

SELECT
    toUInt8OrNull('42'),
    toUInt8OrNull('abc')
FORMAT Vertical
Row 1:
──────
toUInt8OrNull('42'):  42
toUInt8OrNull('abc'): \N

toUInt8OrZero

도입 버전: v1.1

toUInt8와 마찬가지로 이 함수는 입력 값을 UInt8 타입의 값으로 변환하지만, 오류가 발생하는 경우 0을 반환합니다.

지원되는 인수:

  • (U)Int8/16/32/128/256의 문자열 표현.

지원되지 않는 인수(0 반환):

  • NaNInf를 포함한 일반적인 Float* 타입 값의 문자열 표현.
  • 이진수 및 16진수 값의 문자열 표현, 예를 들어 SELECT toUInt8OrZero('0xc0fe');.
참고

입력 값을 UInt8의 범위 내에서 표현할 수 없는 경우 결과에 오버플로 또는 언더플로가 발생합니다. 이는 오류로 간주되지 않습니다.

함께 보기:

구문

toUInt8OrZero(x)

인수

  • x — 숫자를 나타내는 문자열(String)입니다. String

반환 값

UInt8 타입의 값을 반환하며, 변환에 실패하면 0을 반환합니다. UInt8

예시

사용 예시

SELECT
    toUInt8OrZero('-8'),
    toUInt8OrZero('abc')
FORMAT Vertical
Row 1:
──────
toUInt8OrZero('-8'):  0
toUInt8OrZero('abc'): 0

toUUID

도입 버전: v1.1

String 형식의 값을 UUID 값으로 변환합니다.

문법

toUUID(string)

인수

반환 값

UUID 문자열 표현으로부터 UUID를 반환합니다. UUID

예시

사용 예시

SELECT toUUID('61f0c404-5cb3-11e7-907b-a6006ad3dba0') AS uuid
┌─────────────────────────────────uuid─┐
│ 61f0c404-5cb3-11e7-907b-a6006ad3dba0 │
└──────────────────────────────────────┘

toUUIDOrZero

도입 버전: v20.12

입력 값을 UUID 타입의 값으로 변환하지만, 오류가 발생할 경우 zero UUID를 반환합니다. toUUID와 유사하지만, 변환 오류 시 예외를 발생시키는 대신 zero UUID (00000000-0000-0000-0000-000000000000)를 반환합니다.

지원되는 인수:

  • 표준 형식의 UUID 문자열 표현(8-4-4-4-12개의 16진수 숫자).
  • 하이픈이 없는 UUID 문자열 표현(32개의 16진수 숫자).

지원되지 않는 인수(zero UUID 반환):

  • 잘못된 문자열 형식.
  • 문자열이 아닌 타입.

구문

toUUIDOrZero(x)

인수

  • x — UUID를 문자열로 표현한 값. String

반환 값

성공 시 UUID 값을, 그렇지 않으면 모두 0으로 구성된 UUID (00000000-0000-0000-0000-000000000000)를 반환합니다. UUID

예시

사용 예시

SELECT
    toUUIDOrZero('550e8400-e29b-41d4-a716-446655440000') AS valid_uuid,
    toUUIDOrZero('invalid-uuid') AS invalid_uuid
┌─valid_uuid───────────────────────────┬─invalid_uuid─────────────────────────┐
│ 550e8400-e29b-41d4-a716-446655440000 │ 00000000-0000-0000-0000-000000000000 │
└──────────────────────────────────────┴──────────────────────────────────────┘

toUnixTimestamp64Micro

도입 버전: v20.5

DateTime64를 마이크로초 단위의 고정 정밀도를 가진 Int64 값으로 변환합니다. 입력 값의 정밀도에 따라 값이 적절히 확대되거나 축소됩니다.

참고

출력 값은 입력 값의 시간대가 아니라 UTC 기준입니다.

구문

toUnixTimestamp64Micro(value)

인수

  • value — 임의의 정밀도를 가진 DateTime64 값. DateTime64

반환 값

마이크로초 단위의 Unix 타임스탬프를 반환합니다. Int64

예시

사용 예시

WITH toDateTime64('2025-02-13 23:31:31.011123', 6, 'UTC') AS dt64
SELECT toUnixTimestamp64Micro(dt64);
┌─toUnixTimestamp64Micro(dt64)─┐
│               1739489491011123 │
└────────────────────────────────┘

toUnixTimestamp64Milli

도입 버전: v20.5

DateTime64를 밀리초 고정 정밀도의 Int64 값으로 변환합니다. 입력 값은 정밀도에 따라 적절히 확대 또는 축소되어 변환됩니다.

참고

출력 값은 입력 값의 시간대가 아니라 UTC를 기준으로 합니다.

구문

toUnixTimestamp64Milli(value)

인수

  • value — 임의의 정밀도를 가진 DateTime64 값입니다. DateTime64

반환 값

밀리초 단위의 Unix 타임스탬프를 반환합니다. Int64

예제

사용 예제

WITH toDateTime64('2025-02-13 23:31:31.011', 3, 'UTC') AS dt64
SELECT toUnixTimestamp64Milli(dt64);
┌─toUnixTimestamp64Milli(dt64)─┐
│                1739489491011 │
└──────────────────────────────┘

toUnixTimestamp64Nano

도입 버전: v20.5

DateTime64를 나노초 단위의 고정된 정밀도를 갖는 Int64 값으로 변환합니다. 입력값은 자신의 정밀도에 따라 적절히 확대 또는 축소되어 변환됩니다.

참고

출력 값은 입력 값의 타임존이 아니라 UTC를 기준으로 합니다.

구문

toUnixTimestamp64Nano(value)

인수

  • value — 임의의 정밀도를 가진 DateTime64 값입니다. DateTime64

반환 값

Unix 타임스탬프를 나노초 단위로 반환합니다. Int64

예시

사용 예시

WITH toDateTime64('2025-02-13 23:31:31.011123456', 9, 'UTC') AS dt64
SELECT toUnixTimestamp64Nano(dt64);
┌─toUnixTimestamp64Nano(dt64)────┐
│            1739489491011123456 │
└────────────────────────────────┘

toUnixTimestamp64Second

도입 버전: v24.12

DateTime64를 초 단위의 고정 정밀도를 갖는 Int64 값으로 변환합니다. 입력 값은 정밀도에 따라 적절히 확대 또는 축소되어 변환됩니다.

참고

출력 값은 입력 값의 타임존이 아니라 UTC를 기준으로 합니다.

구문

toUnixTimestamp64Second(value)

인수

  • value — 임의의 정밀도를 가진 DateTime64 값. DateTime64

반환 값

초 단위 Unix 타임스탬프를 반환합니다. Int64

예시

사용 예시

WITH toDateTime64('2025-02-13 23:31:31.011', 3, 'UTC') AS dt64
SELECT toUnixTimestamp64Second(dt64);
┌─toUnixTimestamp64Second(dt64)─┐
│                    1739489491 │
└───────────────────────────────┘