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

데이터 형식 변환 함수

데이터 변환 시 일반적인 문제

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

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

toDate/toDateTime 함수에 사용되는 날짜 및 날짜-시간 형식은 다음과 같이 정의됩니다.

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

예외적으로 UInt32, Int32, UInt64, Int64 숫자 타입에서 Date로 변환할 때, 값이 65536 이상이면 이 값을 일 수가 아닌 Unix 타임스탬프로 해석하여 해당 날짜로 반올림합니다. 이는 그렇지 않으면 오류가 발생하는 일반적인 패턴인 toDate(unix_timestamp) 호출을 지원하기 위한 것으로, 원래라면 더 번거로운 toDate(toDateTime(unix_timestamp))를 작성해야 합니다.

날짜 타입과 시간 정보를 포함한 날짜·시간 타입 간의 변환은 자연스럽게 수행됩니다. 즉, 시간 값을 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.0

지정된 데이터 타입으로 값을 변환합니다. 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 │
└───────────────────────┘

DATE

도입 버전: v21.2.0

인수를 Date 데이터 타입으로 변환합니다. MySQL 호환성을 위한 toDate의 별칭으로, toDate와 동일하게 동작합니다.

구문

DATE(expr)

인수

반환 값

Date 값을 반환합니다. Date

예시

기본 사용법

SELECT DATE('2023-01-01')
2023-01-01

accurateCast

도입 버전: v1.1.0

값을 지정된 데이터 타입으로 변환합니다. 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.0

값을 지정된 데이터 타입으로 변환합니다. 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.0

값을 지정한 데이터 타입으로 변환합니다. 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.0

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

참고

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

구문

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.0

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.0

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

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

Syntax

fromUnixTimestamp64Micro(value[, timezone])

인수(Arguments)

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

반환 값(Returned value)

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

예제(Examples)

사용 예제(Usage example)

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

fromUnixTimestamp64Milli

도입 버전: v20.5.0

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

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

구문

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.0

나노초 단위 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.0

초 단위 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.0

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

이 FUNCTION은 formatDateTime의 역함수입니다. 형식 String을 사용하여 String 인자를 파싱합니다. 반환 타입은 DateTime입니다.

구문

parseDateTime(time_string, format[, timezone])

별칭(Aliases): TO_UNIXTIME

인수(Arguments)

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

반환 값(Returned value)

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

예시(Examples)

사용 예시(Usage example)

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.0

날짜와 시간의 문자열 표현을 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.0

처리할 수 없는 날짜 형식을 만나면 NULL을 반환한다는 점을 제외하면 parseDateTime32BestEffort와 동일합니다.

구문

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.0

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

구문

parseDateTime32BestEffortOrZero(time_string[, time_zone])

인수(Arguments)

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

반환 값(Returned value)

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

예시(Examples)

사용 예시(Usage example)

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.0

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

이 함수는 DateTime64에 대해 formatDateTime의 역함수입니다. 형식 문자열을 사용하여 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.0

parseDateTimeBestEffort 함수와 동일하지만 밀리초 및 마이크로초까지 파싱하며 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.0

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.0

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

구문

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

인수

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

반환 값

time_stringDateTime64로 변환한 값을 반환하며, 입력을 해석할 수 없는 경우 zero date/datetime 값인 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.0

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.0

parseDateTime64BestEffort와 동일하지만, 모호한 경우 미국식 날짜 형식(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.0

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

구문

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.0

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

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

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

구문

parseDateTime64InJodaSyntax(time_string, format[, timezone])

인수

  • time_stringDateTime64로 파싱할 문자열입니다. String
  • formattime_string을 어떻게 파싱할지 지정하는 Joda 구문을 사용하는 형식 문자열입니다. 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.0

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.0

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

구문

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.0

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.0

parseDateTime64와 동일하지만, 파싱할 수 없는 날짜 형식을 만나면 zero date(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.0

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.0

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.0

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. 이 경우 MM 값은 01로 대체됩니다.
  • 날짜와 시간에 더해 시간대 오프셋 정보가 포함된 문자열: 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값 날짜/날짜시간 값(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.0

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

Syntax

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.0

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

이 FUNCTION은 ISO 날짜 형식에 대해서는 parseDateTimeBestEffort와 동일하게 동작하지만, 모호한 경우에는 미국식 날짜 형식을 우선 사용하며, 파싱 오류 시 NULL을 반환합니다.

구문

parseDateTimeBestEffortUSOrNull(time_string[, time_zone])

인수

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

반환 값

미국식 형식을 우선적으로 사용하여 time_string을 DateTime으로 반환하거나, 입력을 파싱할 수 없는 경우 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.0

parseDateTimeBestEffortUS 함수와 동일하지만, 처리할 수 없는 날짜 형식을 만나면 제로 날짜(zero date)인 1970-01-01 또는 시간 정보가 포함된 제로 날짜 1970-01-01 00:00:00를 반환합니다.

이 함수는 ISO 날짜 형식에 대해서는 parseDateTimeBestEffort와 동일하게 동작하지만, 애매한 경우에는 미국식 날짜 형식을 우선 사용하며, 파싱 오류가 발생하면 0 값을 반환합니다.

구문

parseDateTimeBestEffortUSOrZero(time_string[, time_zone])

인수

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

반환 값

미국 형식 우선 규칙을 사용하여 time_stringDateTime으로 반환하며, 입력을 파싱할 수 없는 경우 영(0) 날짜/시간 값( 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.0

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.0

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.0

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

구문

parseDateTimeInJodaSyntaxOrZero(time_string, format[, timezone])

인수

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

반환 값

입력 문자열에서 파싱한 DateTime을 반환하며, 파싱에 실패하면 값이 0인 DateTime을 반환합니다. 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.0

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.0

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.0

제공된 값 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 │
└─────────────┴──────────────┴───────────────┘

배열 예시

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.0

입력 값을 리틀 엔디언 순서를 가정하여, Unix epoch인 1970-01-01 이후 경과한 일 수를 나타내는 Date 값으로 재해석합니다.

구문

reinterpretAsDate(x)

인수

반환 값

날짜입니다. Date

예시

사용 예시

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

reinterpretAsDateTime

도입 버전: v1.1.0

입력 값을 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.0

입력값을 고정 길이 문자열(FixedString)로 재해석합니다(리틀 엔디언 순서를 가정합니다). 끝의 널 바이트는 무시되며, 예를 들어 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.0

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

구문

reinterpretAsFloat32(x)

인수

반환 값

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

예시

사용 예시

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

reinterpretAsFloat64

도입된 버전: v1.1.0

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

구문

reinterpretAsFloat64(x)

인수

반환 값

재해석한 값 x를 반환합니다. 반환 타입은 Float64입니다.

예시

사용 예시

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

reinterpretAsInt128

도입 버전: v1.1.0

입력 값을 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.0

입력 값을 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.0

입력 값을 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.0

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

구문

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.0

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

구문

reinterpretAsInt64(x)

인수

반환 값

재해석된 값 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.0

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

구문

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.0

입력값을 문자열로 재해석합니다(리틀 엔디언 순서를 가정합니다). 마지막에 있는 널 바이트는 무시됩니다. 예를 들어, 이 함수는 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.0

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

구문

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.0

입력 값을 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.0

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

구문

reinterpretAsUInt256(x)

인수

반환 값

재해석된 값인 x를 반환합니다. 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.0

입력 값을 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.0

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

구문

reinterpretAsUInt64(x)

인수

반환 값

x를 UInt64로 재해석한 값을 반환합니다. 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.0

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

구문

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.0

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

구문

reinterpretAsUUID(fixed_string)

인수

  • fixed_string — 빅 엔디언(big-endian) 바이트 문자열입니다. FixedString

반환 값

UUID 타입의 값입니다. UUID

예시

String을 UUID로 변환

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

toBFloat16

도입 버전: v1.1.0

입력값을 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.0

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

지원되는 인수:

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

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

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

이 함수는 문자열 표현에서 변환하는 과정에서 정밀도가 암묵적으로 손실되는 것을 허용합니다.

함께 보기:

구문

toBFloat16OrNull(x)

인수(Arguments)

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

반환 값(Returned value)

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

예시(Examples)

사용 예시(Usage example)

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.0

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

지원되는 인수:

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

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

  • 이진수 및 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.0

입력 값을 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.0

입력값을 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.0

인수를 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.0

인수를 Date32 데이터 타입으로 변환합니다. 값이 허용 범위를 벗어나는 경우 toDate32OrDefaultDate32에서 지원하는 하한 경계값을 반환합니다. 인수가 Date 타입인 경우 해당 타입의 허용 범위도 함께 고려합니다. 잘못된 인수가 전달되면 기본값(default value)을 반환합니다.

구문

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.0

입력값을 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.0

입력 값을 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.0

toDate와 유사하지만, 변환에 성공하지 못하면 기본값을 반환합니다. 기본값은 두 번째 인자가 지정되어 있으면 그 값이고, 지정되지 않은 경우 Date의 하한 값입니다.

구문

toDateOrDefault(expr[, default])

인자

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

반환 값

성공한 경우 Date 타입의 값을 반환합니다. 실패한 경우 기본값이 전달되어 있으면 해당 값을, 전달되지 않은 경우 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.0

입력값을 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.0

입력 값을 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.0

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

참고

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

문법

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.0

입력 값을 DateTime 타입으로 변환합니다. String, FixedString, Date, Date32, DateTime 또는 수치형 타입((U)Int*, Float*, Decimal)에서의 변환을 지원합니다. DateTime32DateTime에 비해 더 넓은 범위를 제공하며, 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.0

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

구문

toDateTime64(expr, scale[, timezone])

인수

  • expr — 숫자 또는 숫자를 문자열로 표현한 값을 반환하는 식입니다. 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.0

toDateTime64와 마찬가지로 이 함수는 입력값을 DateTime64 타입의 값으로 변환합니다. 다만 잘못된 인수가 전달된 경우 DateTime64의 기본값 또는 제공된 기본값을 반환합니다.

구문

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

인수

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

반환 값

성공하면 DateTime64 유형의 값을 반환하며, 그렇지 않으면 default 값이 전달된 경우 해당 값을, 전달되지 않은 경우 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.0

입력 값을 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.0

입력 값을 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.0

toDateTime과 유사하지만, 변환에 실패하는 경우 기본값을 반환합니다. 기본값은 세 번째 인자가 지정되어 있으면 해당 값이고, 지정되지 않은 경우 DateTime의 하한입니다.

구문

toDateTimeOrDefault(expr[, timezone, default])

인자

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

반환 값

성공한 경우 DateTime 타입의 값을 반환하고, 그렇지 않은 경우 default 값이 전달되었으면 해당 값을, 전달되지 않았으면 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.0

입력값을 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.0

입력 값을 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.0

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

지원되는 인수:

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

지원되지 않는 인수:

  • Float* 형식의 NaN, Inf 값 또는 해당 값의 문자열 표현(대소문자 구분 없음).
  • 이진 및 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와 같습니다. 연산에 기본 정수 타입을 사용하도록 하려면 String 입력을 사용할 수 있습니다: toDecimal128('1.15', 2) = 1.15

문법

toDecimal128(expr, S)

인수

  • expr — 숫자 또는 숫자의 문자열 표현을 반환하는 식입니다. Expression
  • S — 0에서 38 사이의 스케일(scale) 매개변수로, 소수 부분이 가질 수 있는 자릿수(숫자 개수)를 지정합니다. 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.0

toDecimal128과 같이, 이 함수는 입력값을 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.0

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

지원되는 인수:

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

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

  • Float* 값 NaNInf의 값 또는 해당 값의 문자열 표현(대소문자 구분 없음).
  • 이진수 및 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.0

입력 값을 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.0

입력 값을 스케일 S를 갖는 Decimal(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.15 * 100이 부동소수점에서 114.99가 되기 때문에 1.14와 같습니다. 연산이 내부 정수 타입을 사용하도록 하려면 String 입력을 사용할 수 있습니다: toDecimal256('1.15', 2) = 1.15

구문

toDecimal256(expr, S)

인수

  • expr — 숫자 또는 숫자의 문자열 표현을 반환하는 표현식입니다. Expression
  • S — 0 이상 76 이하의 스케일 매개변수로, 숫자의 소수 부분이 가질 수 있는 자릿수를 지정합니다. 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.0

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

구문

toDecimal256OrDefault(expr, S[, default])

인수

  • expr — 숫자의 문자열(String) 표현입니다. String
  • S — 0과 76 사이의 스케일(scale) 매개변수로, 숫자의 소수부가 가질 수 있는 자릿수를 지정합니다. UInt8
  • default — 선택 사항입니다. Decimal256(S) 타입으로의 파싱이 실패했을 때 반환할 기본값입니다. 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.0

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

지원되는 인수:

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

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

  • NaN, Inf(대소문자 구분 없음)과 같은 Float* 값 또는 그 문자열 표현.
  • 2진수 및 16진수 값을 나타내는 문자열 표현.
  • Decimal256의 범위를 초과하는 값: (-1 * 10^(76 - S), 1 * 10^(76 - S)).

함께 보기:

구문

toDecimal256OrNull(expr, S)

인자

  • expr — 숫자 또는 숫자의 문자열 표현을 반환하는 표현식입니다. Expression
  • S — 0에서 76 사이의 스케일(scale) 매개변수로, 숫자의 소수 부분이 가질 수 있는 자릿수 개수를 지정합니다. 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.0

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

지원되는 인수:

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

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

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

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

함께 보기:

구문

toDecimal256OrZero(expr, S)

인수

  • expr — 숫자 또는 숫자를 문자열로 표현한 값을 반환하는 식입니다. Expression
  • S — 0에서 76 사이의 스케일 매개변수로, 소수 부분 자릿수의 최대 개수를 지정합니다. 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.0

입력 값을 스케일 S를 갖는 Decimal(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가 되기 때문입니다. 문자열 입력을 사용하여 연산이 내부 정수 타입을 사용하도록 할 수 있습니다: toDecimal32('1.15', 2) = 1.15

구문

toDecimal32(expr, S)

인수

  • expr — 숫자 또는 숫자의 문자열 표현을 반환하는 식입니다. Expression
  • S — 0에서 9 사이의 스케일(scale) 매개변수로, 수의 소수 부분에 허용되는 자릿수의 개수를 지정합니다. 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.0

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.0

입력 값을 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)

인자

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

반환 값

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

예시

사용 예시

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

toDecimal32OrZero

도입 버전: v20.1.0

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

지원되는 인수:

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

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

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

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

구문

toDecimal32OrZero(expr, S)

인자

  • expr — 숫자 또는 숫자를 나타내는 문자열을 반환하는 표현식입니다. Expression
  • S — 0에서 9 사이의 스케일 파라미터로, 숫자의 소수 부분이 가질 수 있는 자릿수(소수 자릿수)를 지정합니다. 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.0

입력 값을 스케일이 SDecimal(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.15 * 100이 114.99가 되기 때문에 1.14와 같습니다. 문자열 입력을 사용하면 내부 정수 타입을 사용하여 연산하게 할 수 있습니다: toDecimal64('1.15', 2) = 1.15

문법

toDecimal64(expr, S)

인수

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

반환 값

10진수(Decimal) 값을 반환합니다. 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.0

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

문법

toDecimal64OrDefault(expr, S[, default])

인자

  • expr — 숫자를 문자열(String)로 표현한 값입니다. 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.0

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

지원되는 인수:

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

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

  • Float* 값 NaNInf의 값 또는 해당 문자열 표현(대소문자를 구분하지 않음).
  • 2진수 및 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.0

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

지원되는 인수:

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

지원되지 않는 인수(다음 경우에는 0 반환):

  • Float* 값 NaNInf(대소문자 구분 없음) 또는 그러한 값의 문자열 표현.
  • 2진수 및 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.0

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

이 FUNCTION은 입력 값을 지정된 소수 자릿수로 반올림합니다. 입력 값의 소수 자릿수가 요청된 자릿수보다 적은 경우, 결과를 0으로 채워 지정된 소수 자릿수와 정확히 같아지도록 합니다.

구문

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.0

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

문자열의 바이트 수가 N보다 적으면 오른쪽을 널(null) 바이트로 채웁니다. 문자열의 바이트 수가 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.0

입력 값을 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.0

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.0

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

지원되는 인수:

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

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

  • SELECT toFloat32OrNull('0xc0fe');와 같은 이진수 및 16진수 값의 문자열 표현.
  • 유효하지 않은 문자열 형식.

관련 항목:

구문

toFloat32OrNull(x)

인자

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

반환값

성공하면 32비트 부동소수점 값을 반환하고, 그렇지 않으면 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.0

입력 값을 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.0

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

지원되는 인수:

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

지원되지 않는 인수:

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

관련 항목:

구문

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.0

toFloat64와 같이, 이 함수는 입력값을 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.0

입력 값을 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.0

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

함께 보기:

구문

toFloat64OrZero(x)

인자

  • x — 숫자를 나타내는 문자열 값. String

반환 값

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

예시

사용 예시

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

toInt128

도입 버전: v1.1.0

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

지원되는 인수:

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

지원되지 않는 인수:

  • NaN, Inf를 포함한 Float* 값의 문자열 표현.
  • SELECT toInt128('0xc0fe');와 같은 2진수 및 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.0

toInt128과 마찬가지로, 이 FUNCTION은 입력값을 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.0

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

지원되는 인수:

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

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

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

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

관련 항목:

구문

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.0

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

함께 보기:

구문

toInt128OrZero(x)

인수

반환 값

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

예시

사용 예시

SELECT toInt128OrZero('123')
123

변환 실패 시 0 반환

SELECT toInt128OrZero('abc')
0

toInt16

도입 버전: v1.1.0

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

지원되는 인수:

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

지원되지 않는 인수:

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

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

참고

이 함수는 0을 향한 반올림을 사용하며, 이는 숫자의 소수 자릿수를 잘라낸다는 의미입니다.

함께 보기:

구문

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.0

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

구문

toInt16OrDefault(expr[, default])

인수

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

반환 값

성공하면 Int16 타입의 값을 반환하고, 실패하면 default 값이 지정된 경우 해당 값을, 지정되지 않은 경우 0을 반환합니다. Int16

예제

성공적인 변환

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

변환 실패

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

toInt16OrNull

도입된 버전: v1.1.0

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

지원되는 인수:

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

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

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

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

관련 항목:

구문

toInt16OrNull(x)

인수

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

반환 값

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

예시

사용 예시

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

toInt16OrZero

도입된 버전: v1.1.0

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

지원되는 인수:

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

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

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

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

관련 항목:

구문

toInt16OrZero(x)

인자

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

반환 값

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

예시

사용 예시

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

toInt256

도입된 버전: v1.1.0

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

지원되는 인수:

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

지원되지 않는 인수:

  • NaN, Inf를 포함한 Float* 값의 문자열 표현.
  • SELECT toInt256('0xc0fe');와 같은 이진수 및 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.0

toInt256와 마찬가지로 이 함수는 입력값을 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.0

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

지원되는 인자:

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

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

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

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

함께 보기:

Syntax

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.0

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

함께 보기:

구문

toInt256OrZero(x)

인자

반환값

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

예시

사용 예시

SELECT toInt256OrZero('123')
123

변환 실패 시 0을 반환

SELECT toInt256OrZero('abc')
0

toInt32

도입 버전: v1.1.0

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

지원되는 인수:

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

지원되지 않는 인수:

  • NaN, Inf를 포함한 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.0

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

구문

toInt32OrDefault(expr[, default])

인수

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

반환 값

성공한 경우 Int32 타입의 값을 반환하며, 그렇지 않은 경우 default 값이 전달되었다면 해당 값을, 전달되지 않았다면 0을 반환합니다. Int32

예시

성공적인 변환

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

변환 실패

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

toInt32OrNull

도입된 버전: v1.1.0

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

지원되는 인수:

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

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

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

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

함께 보기:

구문

toInt32OrNull(x)

인자

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

반환 값

Int32 타입의 값을 반환하며, 변환에 실패한 경우에는 NULL을 반환합니다. Int32 또는 NULL

예시

사용 예시

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

toInt32OrZero

도입 버전: v1.1.0

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

지원되는 인수:

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

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

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

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

함께 보기:

Syntax

toInt32OrZero(x)

인자

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

반환 값

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

예시

사용 예시

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

toInt64

도입 버전: v1.1.0

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

지원하는 인자:

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

지원하지 않는 인자:

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

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

참고

이 함수는 0 방향으로 반올림을 사용하며, 이는 숫자의 소수 자릿수를 잘라낸다는 의미입니다.

함께 보기:

구문

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.0

toInt64와 마찬가지로, 이 FUNCTION은 입력값을 Int64 타입 값으로 변환하지만, 오류가 발생한 경우 기본값을 반환합니다. default 값이 지정되지 않으면 오류 발생 시 0이 반환됩니다.

구문

toInt64OrDefault(expr[, default])

인수(Arguments)

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

반환 값(Returned value)

성공하면 Int64 타입의 값을 반환하고, 그렇지 않은 경우 전달된 기본값이 있으면 그 값을, 없으면 0을 반환합니다. Int64

예시(Examples)

성공적인 변환(Successful conversion)

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

변환 실패

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

toInt64OrNull

도입된 버전: v1.1.0

toInt64와 마찬가지로 이 FUNCTION은 입력 값을 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.0

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

함께 보기:

구문

toInt64OrZero(x)

인자

반환 값

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

예시

사용 예시

SELECT toInt64OrZero('123')
123

변환 실패 시 0을 반환합니다

SELECT toInt64OrZero('abc')
0

toInt8

도입 버전: v1.1.0

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

지원되는 인수:

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

지원되지 않는 인수:

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

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

참고

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

함께 보기:

구문

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.0

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.0

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

지원되는 인수:

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

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

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

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

같이 보기:

구문

toInt8OrNull(x)

인자

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

반환 값

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

예시

사용 예시

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

toInt8OrZero

도입된 버전: v1.1.0

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.0

숫자 값과 단위 문자열을 사용하여 Interval 값을 생성합니다.

이 함수는 단위를 문자열 인자로 지정하여, 서로 다른 타입의 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 │
└──────────────────────┴─────────────────────┴─────────────────────┘

Interval을 동적으로 생성하기

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.0

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

구문

toIntervalDay(n)

인수(Arguments)

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

반환 값(Returned value)

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

예시(Examples)

사용 예시(Usage example)

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.0

IntervalHour 데이터 타입의 n시간 간격(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.0

IntervalMicrosecond 데이터 타입의 n 마이크로초 길이 interval을 반환합니다.

구문

toIntervalMicrosecond(n)

인수

반환 값

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

예시

사용 예시

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.0

데이터 타입 IntervalMillisecondn밀리초 간격(interval)을 반환합니다.

구문

toIntervalMillisecond(n)

인자

반환 값

n 밀리초 길이의 interval을 반환합니다. 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.0

IntervalMinute 데이터 타입의 n분 길이 인터벌 값을 반환합니다.

문법

toIntervalMinute(n)

인수

  • n — 분 단위 수입니다. 정수, 해당 정수의 문자열 표현, 또는 부동 소수점 수를 사용할 수 있습니다. (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.0

IntervalMonth 데이터 타입의 n개월 간격(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.0

데이터 타입 IntervalNanosecondn 나노초 길이 구간(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.0

데이터 타입 IntervalQuartern분기 간격(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.0

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

구문

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.0

데이터 타입 IntervalWeekn주 구간(interval)을 반환합니다.

구문

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.0

IntervalYear 데이터 타입의 n년 기간(interval)을 반환합니다.

구문

toIntervalYear(n)

인자

반환 값

n년을 나타내는 interval을 반환합니다. 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.0

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

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

구문

toLowCardinality(expr)

인수

반환값

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

예시

사용 예시

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

toString

도입 버전: v1.1.0

값을 문자열 표현으로 변환합니다. 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.0

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

null 바이트(\0)는 문자열 종료 문자로 간주됩니다. 이 함수는 null 바이트가 의미 있는 내용의 끝을 표시하는 C 스타일의 문자열 또는 이진 데이터를 처리할 때 유용합니다.

구문

toStringCutToZero(s)

인수(Arguments)

  • s — 처리할 대상인 String 또는 FixedString 값입니다. String 또는 FixedString

반환 값(Returned value)

첫 번째 null 바이트 앞까지의 문자만 포함하는 String 값을 반환합니다. String

예시(Examples)

사용 예시(Usage example)

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

toTime

도입 버전: v1.1.0

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

구문

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.0

입력 값을 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.0

입력 값을 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.0

입력 값을 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.0

입력 값을 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.0

입력 값을 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.0

입력 값을 UInt128 타입의 값으로 변환합니다. 오류가 발생하면 예외를 발생시킵니다. 이 함수는 0을 향한 반올림을 사용하며, 숫자의 소수 자릿수를 잘라냅니다.

지원되는 인수:

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

지원되지 않는 인수:

  • NaN, Inf를 포함한 Float* 값의 문자열 표현.
  • SELECT toUInt128('0xc0fe');와 같은 2진수 및 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.0

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

구문

toUInt128OrDefault(expr[, default])

인자

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

반환값

성공한 경우 UInt128 타입의 값을 반환하고, 그렇지 않은 경우 전달된 기본값이 있으면 해당 값을, 없으면 0을 반환합니다. UInt128

예시

성공적인 변환

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

변환 실패

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

toUInt128OrNull

도입된 버전: v21.6.0

toUInt128과 같이, 이 함수는 입력 값을 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.0

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

지원되는 인자:

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

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

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

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

함께 보기:

구문

toUInt128OrZero(x)

인자

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

반환 값

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

예시

사용 예시

SELECT
    toUInt128OrZero('128'),
    toUInt128OrZero('abc')
FORMAT Vertical
Row 1:
──────
toUInt128OrZero('128'): 128
toUInt128OrZero('abc'): 0

toUInt16

도입 버전: v1.1.0

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

지원되는 인수:

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

지원되지 않는 인수:

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

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

참고

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

함께 보기:

Syntax

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.0

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.0

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

지원되는 인수:

  • (U)Int8/16/32/128/256의 문자열 표현.

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

  • NaNInf를 포함한 Float* 값의 문자열 표현.
  • SELECT toUInt16OrNull('0xc0fe');와 같은 2진수 및 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.0

toUInt16과 같이 이 함수는 입력 값을 UInt16 타입의 값으로 변환하지만, 오류가 발생한 경우 0을 반환합니다.

지원되는 인자:

  • (U)Int8/16/32/128/256의 문자열 표현.

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

  • NaNInf를 포함한 Float* 값의 문자열 표현.
  • 이진수 및 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.0

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

지원되는 인수:

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

지원되지 않는 인수:

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

입력 값을 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.0

toUInt256와 같이, 이 FUNCTION은 입력 값을 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.0

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

지원되는 인수:

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

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

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

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

함께 보기:

구문

toUInt256OrNull(x)

인수

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

반환 값

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

예시

사용 예시

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

toUInt256OrZero

도입된 버전: v20.8.0

toUInt256와 유사하게, 이 함수는 입력값을 UInt256 타입의 값으로 변환하지만, 오류가 발생하는 경우 0을 반환합니다.

지원되는 인자:

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

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

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

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

함께 보기:

구문

toUInt256OrZero(x)

인수

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

반환 값

변환에 성공하면 UInt256 타입의 값을 반환하고, 실패하면 0을 반환합니다. UInt256

예시

사용 예시

SELECT
    toUInt256OrZero('256'),
    toUInt256OrZero('abc')
FORMAT Vertical
Row 1:
──────
toUInt256OrZero('256'): 256
toUInt256OrZero('abc'): 0

toUInt32

도입 버전: v1.1.0

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

지원되는 인수:

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

지원되지 않는 인수:

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

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

참고

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

관련 항목:

Syntax

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.0

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

구문

toUInt32OrDefault(expr[, default])

인자

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

반환 값

변환에 성공하면 UInt32 타입의 값을 반환하며, 실패하면 기본값이 지정된 경우 해당 값을, 지정되지 않은 경우 0을 반환합니다. UInt32

예제

성공적인 변환

SELECT toUInt32OrDefault('32', CAST('0', 'UInt32'))
32

변환 실패

SELECT toUInt32OrDefault('abc', CAST('0', 'UInt32'))
0

toUInt32OrNull

도입 버전: v1.1.0

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

지원되는 인수:

  • (U)Int8/16/32/128/256의 문자열 표현.

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

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

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

함께 보기:

구문

toUInt32OrNull(x)

인수(Arguments)

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

반환 값(Returned value)

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

예시(Examples)

사용 예시(Usage example)

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

toUInt32OrZero

도입 버전: v1.1.0

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

지원되는 인수:

  • (U)Int8/16/32/128/256의 문자열 표현.

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

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

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

함께 보기:

구문

toUInt32OrZero(x)

인수

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

반환 값

변환에 성공하면 UInt32 타입의 값을, 실패하면 0을 반환합니다. UInt32

예시

사용 예시

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

toUInt64

도입 버전: v1.1.0

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

지원되는 인수:

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

지원되지 않는 타입:

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

입력 값을 UInt64 범위로 표현할 수 없는 경우, 결과가 오버플로 또는 언더플로 됩니다. 이는 오류로 간주되지 않습니다. 예: SELECT toUInt64(18446744073709551616) == 0;

참고

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

함께 보기:

구문

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.0

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.0

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

지원되는 인자:

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

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

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

입력값을 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.0

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

지원되는 인수:

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

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

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

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

함께 보기:

구문

toUInt64OrZero(x)

인수

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

반환 값

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

예시

사용 예시

SELECT
    toUInt64OrZero('64'),
    toUInt64OrZero('abc')
FORMAT Vertical
Row 1:
──────
toUInt64OrZero('64'):  64
toUInt64OrZero('abc'): 0

toUInt8

도입 버전: v1.1.0

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

지원되는 인수:

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

지원되지 않는 인수:

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

입력 값을 UInt8의 범위 내에서 표현할 수 없으면 결과에서 overflow 또는 underflow가 발생합니다. 이는 오류로 간주되지 않습니다. 예: SELECT toUInt8(256) == 0;.

참고

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

함께 보기:

구문

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.0

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

구문

toUInt8OrDefault(expr[, default])

인수

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

반환 값

변환에 성공하면 UInt8 타입의 값을 반환하며, 실패한 경우 default 인수가 전달되었으면 해당 값을, 전달되지 않았으면 0을 반환합니다. UInt8

예시

성공적인 변환

SELECT toUInt8OrDefault('8', CAST('0', 'UInt8'))
8

변환 실패

SELECT toUInt8OrDefault('abc', CAST('0', 'UInt8'))
0

toUInt8OrNull

도입된 버전: v1.1.0

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

지원되는 인자:

  • (U)Int8/16/32/128/256의 문자열 표현.

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

  • 일반적인 Float* 값의 문자열 표현 (NaNInf 포함).
  • 2진수 및 16진수 값의 문자열 표현. 예: SELECT toUInt8OrNull('0xc0fe');.
참고

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

함께 보기:

Syntax

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.0

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

지원되는 인수:

  • (U)Int8/16/32/128/256의 문자열 표현.

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

  • 일반적인 부동소수점(Float*) 값의 문자열 표현 (NaN, Inf 포함).
  • 이진 및 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.0

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.0

입력 값을 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.0

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.0

DateTime64를 밀리초(ms) 단위의 고정 정밀도를 갖는 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.0

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.0

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 │
└───────────────────────────────┘