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

UUID 작업을 위한 함수

UUIDv7 생성

생성된 UUID에는 Unix 밀리초 단위의 48비트 타임스탬프가 먼저 오고, 그 뒤에 버전 「7」(4비트), 밀리초 내에서 UUID를 구분하기 위한 카운터(42비트, 변이 필드 「2」(2비트) 포함), 그리고 랜덤 필드(32비트)가 이어집니다. 특정 타임스탬프(unix_ts_ms)에 대해 카운터는 임의의 값에서 시작하여 타임스탬프가 변경될 때까지 새 UUID가 생성될 때마다 1씩 증가합니다. 카운터에 오버플로가 발생하면 타임스탬프 필드가 1 증가하고, 카운터는 새로운 임의의 시작값으로 재설정됩니다. UUID 생성 함수는 동시에 실행 중인 스레드와 쿼리 전반의 모든 함수 호출에서 동일한 타임스탬프 내의 카운터 필드가 단조 증가하도록 보장합니다.

 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
├─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┤
|                           unix_ts_ms                          |
├─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┤
|          unix_ts_ms           |  ver  |   counter_high_bits   |
├─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┤
|var|                   counter_low_bits                        |
├─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┤
|                            rand_b                             |
└─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┘

Snowflake ID 생성

생성된 Snowflake ID는 현재 Unix 타임스탬프(밀리초 단위, 41비트 + 상위 1비트는 0)와 그 뒤를 잇는 머신 ID(10비트), 그리고 동일한 밀리초 내에서 ID를 구분하기 위한 카운터(12비트)로 구성됩니다. 주어진 타임스탬프(unix_ts_ms)에서 카운터는 0에서 시작하며, 타임스탬프가 변경될 때까지 새로운 Snowflake ID가 생성될 때마다 1씩 증가합니다. 카운터가 오버플로우되면 타임스탬프 필드가 1 증가하고 카운터는 0으로 재설정됩니다.

참고

생성된 Snowflake ID는 UNIX epoch인 1970-01-01을 기준으로 합니다. Snowflake ID의 epoch에 대한 표준이나 권고안은 없으며, 다른 시스템 구현에서는 Twitter/X(2010-11-04)나 Mastodon(2015-01-01)처럼 서로 다른 epoch를 사용할 수 있습니다.

 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
├─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┤
|0|                         timestamp                           |
├─┼                 ┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┤
|                   |     machine_id    |    machine_seq_num    |
└─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┘

UUIDNumToString

도입 버전: v1.1

UUID의 이진 표현을 입력으로 받아, variant(기본값은 Big-endian)로 형식을 선택적으로 지정하고, 텍스트 형식의 길이 36자의 문자열을 반환합니다.

구문

UUIDNumToString(binary[, variant])

인수

  • binary — UUID의 이진 표현입니다. FixedString(16)
  • variantRFC4122에 정의된 variant 값입니다. 1 = Big-endian(기본값), 2 = Microsoft. (U)Int*

반환 값

UUID를 문자열로 반환합니다. String

예시

사용 예

SELECT
    'a/<@];!~p{jTj={)' AS bytes,
    UUIDNumToString(toFixedString(bytes, 16)) AS uuid
┌─bytes────────────┬─uuid─────────────────────────────────┐
│ a/<@];!~p{jTj={) │ 612f3c40-5d3b-217e-707b-6a546a3d7b29 │
└──────────────────┴──────────────────────────────────────┘

Microsoft 방식

SELECT
    '@</a;]~!p{jTj={)' AS bytes,
    UUIDNumToString(toFixedString(bytes, 16), 2) AS uuid
┌─bytes────────────┬─uuid─────────────────────────────────┐
│ @</a;]~!p{jTj={) │ 612f3c40-5d3b-217e-707b-6a546a3d7b29 │
└──────────────────┴──────────────────────────────────────┘

UUIDStringToNum

도입 버전: v1.1

xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx 형식의 36자 문자열을 받아, 해당 UUID의 이진 표현을 FixedString(16) 형식으로 반환합니다. 이때 이진 표현의 바이트 순서는 선택적으로 variant로 지정할 수 있으며, 기본값은 Big-endian입니다.

구문

UUIDStringToNum(string[, variant = 1])

인자

  • string — 길이가 36자인 문자열 또는 고정 길이 문자열. String 또는 FixedString(36)
  • variantRFC4122에 정의된 Variant 값입니다. 1 = Big-endian(기본값), 2 = Microsoft. (U)Int*

반환 값

string의 이진 표현을 반환합니다. FixedString(16)

예시

사용 예시

SELECT
    '612f3c40-5d3b-217e-707b-6a546a3d7b29' AS uuid,
    UUIDStringToNum(uuid) AS bytes
┌─uuid─────────────────────────────────┬─bytes────────────┐
│ 612f3c40-5d3b-217e-707b-6a546a3d7b29 │ a/<@];!~p{jTj={) │
└──────────────────────────────────────┴──────────────────┘

Microsoft 방식

SELECT
    '612f3c40-5d3b-217e-707b-6a546a3d7b29' AS uuid,
    UUIDStringToNum(uuid, 2) AS bytes
┌─uuid─────────────────────────────────┬─bytes────────────┐
│ 612f3c40-5d3b-217e-707b-6a546a3d7b29 │ @</a;]~!p{jTj={) │
└──────────────────────────────────────┴──────────────────┘

UUIDToNum

도입 버전: v24.5

UUID를 받아 그 이진 표현을 FixedString(16)으로 반환합니다. 이때 형식은 선택적으로 variant로 지정할 수 있으며, 기본값은 Big-endian입니다. 이 함수는 두 개의 개별 함수 호출인 UUIDStringToNum(toString(uuid))을 대체하므로, UUID에서 바이트를 추출할 때 UUID를 문자열로 중간 변환할 필요가 없습니다.

문법

UUIDToNum(uuid[, variant = 1])

인자

반환 값

UUID의 이진 표현을 반환합니다. FixedString(16)

예시

사용 예시

SELECT
    toUUID('612f3c40-5d3b-217e-707b-6a546a3d7b29') AS uuid,
    UUIDToNum(uuid) AS bytes
┌─uuid─────────────────────────────────┬─bytes────────────┐
│ 612f3c40-5d3b-217e-707b-6a546a3d7b29 │ a/<@];!~p{jTj={) │
└──────────────────────────────────────┴──────────────────┘

Microsoft 방식

SELECT
    toUUID('612f3c40-5d3b-217e-707b-6a546a3d7b29') AS uuid,
    UUIDToNum(uuid, 2) AS bytes
┌─uuid─────────────────────────────────┬─bytes────────────┐
│ 612f3c40-5d3b-217e-707b-6a546a3d7b29 │ @</a;]~!p{jTj={) │
└──────────────────────────────────────┴──────────────────┘

UUIDv7ToDateTime

도입: v24.5

UUID 버전 7의 타임스탬프 부분을 반환합니다.

구문

UUIDv7ToDateTime(uuid[, timezone])

인수

반환 값

밀리초 정밀도를 가진 타임스탬프를 반환합니다. UUID가 올바른 버전 7 UUID가 아니면 1970-01-01 00:00:00.000을 반환합니다. DateTime64(3)

예시

사용 예시

SELECT UUIDv7ToDateTime(toUUID('018f05c9-4ab8-7b86-b64e-c9f03fbd45d1'))
┌─UUIDv7ToDateTime(toUUID('018f05c9-4ab8-7b86-b64e-c9f03fbd45d1'))─┐
│                                          2024-04-22 15:30:29.048 │
└──────────────────────────────────────────────────────────────────┘

타임존 포함

SELECT UUIDv7ToDateTime(toUUID('018f05c9-4ab8-7b86-b64e-c9f03fbd45d1'), 'America/New_York')
┌─UUIDv7ToDateTime(toUUID('018f05c9-4ab8-7b86-b64e-c9f03fbd45d1'), 'America/New_York')─┐
│                                                             2024-04-22 11:30:29.048 │
└─────────────────────────────────────────────────────────────────────────────────────┘

dateTime64ToSnowflake

도입: v21.10

Deprecated feature
참고

이 함수는 사용 중단(deprecated)되었으며, allow_deprecated_snowflake_conversion_functions 설정이 활성화된 경우에만 사용할 수 있습니다. 이 함수는 향후 어느 시점에 제거될 예정입니다.

대신 dateTime64ToSnowflakeID 함수를 사용하십시오.

DateTime64를 지정된 시점에서의 첫 번째 Snowflake ID로 변환합니다.

문법

dateTime64ToSnowflake(value)

인수

  • value — 시간 정보를 포함한 날짜. DateTime64

반환 값

해당 시점의 첫 번째 Snowflake ID에 해당하도록 변환한 입력 값을 반환합니다. Int64

예시

사용 예시

WITH toDateTime64('2021-08-15 18:57:56.492', 3, 'Asia/Shanghai') AS dt64 SELECT dateTime64ToSnowflake(dt64);
┌─dateTime64ToSnowflake(dt64)─┐
│         1426860704886947840 │
└─────────────────────────────┘

dateTime64ToSnowflakeID

도입된 버전: v24.6

DateTime64 값을 지정된 시점의 첫 번째 Snowflake ID로 변환합니다.

구문

dateTime64ToSnowflakeID(value[, epoch])

인수

  • value — 시간 정보를 포함한 날짜. DateTime64
  • epoch — 1970-01-01 이후 경과한 밀리초를 기준으로 하는 Snowflake ID의 epoch입니다. 기본값은 0(1970-01-01)입니다. Twitter/X epoch(2015-01-01)을 사용하려면 1288834974657을 지정합니다. UInt*

반환 값

입력 값을 UInt64로 변환한 값입니다.

예제

simple

SELECT dateTime64ToSnowflakeID(toDateTime64('2021-08-15 18:57:56', 3, 'Asia/Shanghai'))
6832626394434895872

dateTimeToSnowflake

도입된 버전: v21.10

Deprecated feature
참고

이 함수는 사용이 중단(deprecated)되었으며, allow_deprecated_snowflake_conversion_functions 설정이 활성화된 경우에만 사용할 수 있습니다. 이 함수는 향후 어느 시점에 제거될 예정입니다.

대신 dateTimeToSnowflakeID 함수를 사용하십시오.

DateTime 값을 지정된 시점의 첫 번째 Snowflake ID로 변환합니다.

구문

dateTimeToSnowflake(value)

인자

  • value — 시간 정보가 포함된 날짜 값. DateTime

반환 값

해당 시점의 첫 번째 Snowflake ID에 해당하는 값으로 변환하여 반환합니다. Int64

예시

사용 예시

WITH toDateTime('2021-08-15 18:57:56', 'Asia/Shanghai') AS dt SELECT dateTimeToSnowflake(dt);
┌─dateTimeToSnowflake(dt)─┐
│     1426860702823350272 │
└─────────────────────────┘

dateTimeToSnowflakeID

도입 버전: v24.6

DateTime 값을 해당 시점의 첫 번째 Snowflake ID로 변환합니다.

구문

dateTimeToSnowflakeID(value[, epoch])

인수

  • value — 시간 정보를 포함한 날짜. DateTime
  • epoch — 1970-01-01 이후 밀리초 단위의 Snowflake ID epoch입니다. 기본값은 0 (1970-01-01)입니다. Twitter/X epoch(2015-01-01)을 사용하려면 1288834974657 값을 지정합니다. UInt*

반환 값

입력 값을 UInt64로 변환한 값입니다.

예시

간단한 예

SELECT dateTimeToSnowflakeID(toDateTime('2021-08-15 18:57:56', 'Asia/Shanghai'))
6832626392367104000

dateTimeToUUIDv7

도입된 버전: v25.9

해당 시점의 DateTime 값을 UUIDv7로 변환합니다.

UUID 구조, 카운터 관리, 동시성 보장에 대한 자세한 내용은 「UUIDv7 generation」 섹션을 참고하십시오.

참고

2025년 9월 현재, 버전 7 UUID는 초안 상태이며 향후 레이아웃이 변경될 수 있습니다.

구문

dateTimeToUUIDv7(value)

인수

반환 값

UUIDv7을 반환합니다. UUID

예시

사용 예시

SELECT dateTimeToUUIDv7(toDateTime('2021-08-15 18:57:56', 'Asia/Shanghai'));
┌─dateTimeToUUIDv7(toDateTime('2021-08-15 18:57:56', 'Asia/Shanghai'))─┐
│ 018f05af-f4a8-778f-beee-1bedbc95c93b                                   │
└─────────────────────────────────────────────────────────────────────────┘

동일한 타임스탬프에서 생성되는 여러 UUID

SELECT dateTimeToUUIDv7(toDateTime('2021-08-15 18:57:56'));
SELECT dateTimeToUUIDv7(toDateTime('2021-08-15 18:57:56'));
┌─dateTimeToUUIDv7(t⋯08-15 18:57:56'))─┐
│ 017b4b2d-7720-76ed-ae44-bbcc23a8c550 │
└──────────────────────────────────────┘
┌─dateTimeToUUIDv7(t⋯08-15 18:57:56'))─┐
│ 017b4b2d-7720-76ed-ae44-bbcf71ed0fd3 │
└──────────────────────────────────────┘

generateSnowflakeID

도입: v24.6

Snowflake ID를 생성합니다.

함수 generateSnowflakeID는 동시에 실행되는 스레드와 쿼리에서의 모든 함수 호출 간에, 타임스탬프의 카운터 필드가 단조롭게 증가하도록 보장합니다.

구현 세부 내용은 「Snowflake ID 생성」 섹션을 참조하십시오.

구문

generateSnowflakeID([expr, [machine_id]])

인수

  • expr — 쿼리에서 함수가 여러 번 호출되는 경우 공통 부분식 제거(common subexpression elimination) 최적화를 우회하기 위해 사용하는 임의의 expression입니다. 이 expression의 값은 반환되는 Snowflake ID에 영향을 주지 않습니다. 선택 사항입니다. - machine_id — 머신 ID로, 하위 10비트가 사용됩니다. Int64. 선택 사항입니다.

반환 값

Snowflake ID를 반환합니다. UInt64

예시

사용 예시

CREATE TABLE tab (id UInt64)
ENGINE = MergeTree()
ORDER BY tuple();

INSERT INTO tab SELECT generateSnowflakeID();

SELECT * FROM tab;
┌──────────────────id─┐
│ 7199081390080409600 │
└─────────────────────┘

행마다 여러 개의 Snowflake ID가 생성됨

SELECT generateSnowflakeID(1), generateSnowflakeID(2);
┌─generateSnowflakeID(1)─┬─generateSnowflakeID(2)─┐
│    7199081609652224000 │    7199081609652224001 │
└────────────────────────┴────────────────────────┘

식과 머신 ID 함께 사용하기

SELECT generateSnowflakeID('expr', 1);
┌─generateSnowflakeID('expr', 1)─┐
│            7201148511606784002 │
└────────────────────────────────┘

generateUUIDv4

도입: v1.1

버전 4 UUID를 생성합니다.

구문

generateUUIDv4([expr])

인자

  • expr — 선택 사항입니다. 쿼리에서 함수가 여러 번 호출되는 경우 공통 부분식 제거를 우회하기 위해 사용되는 임의의 표현식입니다. 이 표현식의 값은 반환되는 UUID에 아무런 영향을 미치지 않습니다.

반환 값

UUIDv4를 반환합니다. UUID

예제

사용 예제

SELECT generateUUIDv4(number) FROM numbers(3);
┌─generateUUIDv4(number)───────────────┐
│ fcf19b77-a610-42c5-b3f5-a13c122f65b6 │
│ 07700d36-cb6b-4189-af1d-0972f23dc3bc │
│ 68838947-1583-48b0-b9b7-cf8268dd343d │
└──────────────────────────────────────┘

공통 부분식 제거

SELECT generateUUIDv4(1), generateUUIDv4(1);
┌─generateUUIDv4(1)────────────────────┬─generateUUIDv4(2)────────────────────┐
│ 2d49dc6e-ddce-4cd0-afb8-790956df54c1 │ 2d49dc6e-ddce-4cd0-afb8-790956df54c1 │
└──────────────────────────────────────┴──────────────────────────────────────┘

generateUUIDv7

도입 버전: v24.5

버전 7 UUID를 생성합니다.

UUID 구조, 카운터 관리, 동시성 보장에 대한 자세한 내용은 "UUIDv7 generation" 섹션을 참조하십시오.

참고

2025년 9월 현재, 버전 7 UUID는 초안 상태이며, 구조가 향후 변경될 수 있습니다.

구문

generateUUIDv7([expr])

인수

  • expr — 선택적입니다. 함수가 하나의 쿼리에서 여러 번 호출될 때 공통 부분식 제거(common subexpression elimination)를 우회하기 위해 사용하는 임의의 표현식입니다. 이 표현식의 값은 반환되는 UUID에 전혀 영향을 미치지 않습니다. Any

반환 값

UUIDv7을 반환합니다. UUID

예제

사용 예제

SELECT generateUUIDv7(number) FROM numbers(3);
┌─generateUUIDv7(number)───────────────┐
│ 019947fb-5766-7ed0-b021-d906f8f7cebb │
│ 019947fb-5766-7ed0-b021-d9072d0d1e07 │
│ 019947fb-5766-7ed0-b021-d908dca2cf63 │
└──────────────────────────────────────┘

공통 부분식 제거

SELECT generateUUIDv7(1), generateUUIDv7(1);
┌─generateUUIDv7(1)────────────────────┬─generateUUIDv7(1)────────────────────┐
│ 019947ff-0f87-7d88-ace0-8b5b3a66e0c1 │ 019947ff-0f87-7d88-ace0-8b5b3a66e0c1 │
└──────────────────────────────────────┴──────────────────────────────────────┘

snowflakeIDToDateTime

도입된 버전: v24.6

Snowflake ID의 타임스탬프 부분을 DateTime 타입 값으로 반환합니다.

구문

snowflakeIDToDateTime(value[, epoch[, time_zone]])

인수

  • value — Snowflake ID. UInt64
  • epoch — 선택 사항. 1970-01-01 이후 경과한 밀리초 단위의 Snowflake ID epoch입니다. 기본값은 0(1970-01-01)입니다. Twitter/X epoch(2015-01-01)을 사용하려면 1288834974657을 입력합니다. UInt*
  • time_zone — 선택 사항. Timezone. 함수는 해당 시간대를 기준으로 time_string을 해석합니다. String

반환 값

value의 타임스탬프 구성 요소를 반환합니다. DateTime

예시

사용 예시

SELECT snowflakeIDToDateTime(7204436857747984384) AS res
┌─────────────────res─┐
│ 2024-06-06 10:59:58 │
└─────────────────────┘

snowflakeIDToDateTime64

도입된 버전: v24.6

Snowflake ID의 타임스탬프 구성 요소를 DateTime64 타입의 값으로 반환합니다.

구문

snowflakeIDToDateTime64(value[, epoch[, time_zone]])

인자

  • value — Snowflake ID. UInt64
  • epoch — 선택 사항입니다. 1970-01-01 이후 밀리초 단위로 표현한 Snowflake ID의 epoch입니다. 기본값은 0(1970-01-01)입니다. Twitter/X epoch(2015-01-01)을 사용하려면 1288834974657을 입력합니다. UInt*
  • time_zone — 선택 사항입니다. Timezone. 함수는 해당 시간대에 따라 time_string을 파싱합니다. String

반환 값

value의 타임스탬프 구성 요소를 스케일 = 3, 즉 밀리초 정밀도의 DateTime64로 반환합니다. DateTime64

예시

사용 예시

SELECT snowflakeIDToDateTime64(7204436857747984384) AS res
┌─────────────────res─┐
│ 2024-06-06 10:59:58 │
└─────────────────────┘

snowflakeToDateTime

도입 버전: v21.10

Deprecated feature
참고

이 함수는 더 이상 사용되지 않는(deprecated) 함수이며, allow_deprecated_snowflake_conversion_functions 설정이 활성화된 경우에만 사용할 수 있습니다. 이 함수는 향후 어느 시점에 제거될 예정입니다.

대신 snowflakeIDToDateTime 함수를 사용하십시오.

Snowflake ID의 타임스탬프 구성 요소를 DateTime 형식으로 추출합니다.

구문

snowflakeToDateTime(value[, time_zone])

인수

  • value — Snowflake ID입니다. Int64
  • time_zone — 옵션입니다. Timezone. 함수는 time_string을 해당 시간대에 따라 파싱합니다. String

반환 값

value의 타임스탬프 구성 요소를 반환합니다. DateTime

예시

사용 예시

SELECT snowflakeToDateTime(CAST('1426860702823350272', 'Int64'), 'UTC');
┌─snowflakeToDateTime(CAST('1426860702823350272', 'Int64'), 'UTC')─┐
│                                              2021-08-15 10:57:56 │
└──────────────────────────────────────────────────────────────────┘

snowflakeToDateTime64

도입 버전: v21.10

Deprecated feature
참고

이 함수는 더 이상 사용되지 않는 함수이며, allow_deprecated_snowflake_conversion_functions 설정이 활성화된 경우에만 사용할 수 있습니다. 이 함수는 향후 어느 시점에 제거될 예정입니다.

대신 snowflakeIDToDateTime64 함수를 사용하십시오.

Snowflake ID의 타임스탬프 구성 요소를 DateTime64 형식으로 추출합니다.

구문

snowflakeToDateTime64(value[, time_zone])

인수

  • value — Snowflake ID. Int64
  • time_zone — 선택적 인수입니다. Timezone. 함수는 time_string을 해당 타임존에 따라 파싱합니다. String

반환 값

value의 타임스탬프 구성 요소를 반환합니다. DateTime64(3)

예시

사용 예시

SELECT snowflakeToDateTime64(CAST('1426860802823350272', 'Int64'), 'UTC');
┌─snowflakeToDateTime64(CAST('1426860802823350272', 'Int64'), 'UTC')─┐
│                                            2021-08-15 10:58:19.841 │
└────────────────────────────────────────────────────────────────────┘

toUUIDOrDefault

도입 버전: v21.1

String 값을 UUID 타입으로 변환합니다. 변환에 실패하면 오류를 발생시키는 대신 기본 UUID 값을 반환합니다.

이 함수는 표준 UUID 형식(xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx)의 길이 36자의 문자열을 해석하려고 시도합니다. 문자열을 유효한 UUID로 변환할 수 없는 경우, 함수는 지정된 기본 UUID 값을 반환합니다.

구문

toUUIDOrDefault(string, default)

인수

  • string — UUID로 변환할 길이 36자의 String 또는 FixedString(36) 문자열.
  • default — 첫 번째 인수를 UUID 타입으로 변환할 수 없을 때 반환할 UUID 값.

반환 값

변환에 성공하면 변환된 UUID를 반환하고, 실패하면 기본 UUID를 반환합니다. UUID

예시

성공적으로 변환되면 파싱된 UUID를 반환합니다

SELECT toUUIDOrDefault('61f0c404-5cb3-11e7-907b-a6006ad3dba0', toUUID('59f0c404-5cb3-11e7-907b-a6006ad3dba0'));
┌─toUUIDOrDefault('61f0c404-5cb3-11e7-907b-a6006ad3dba0', toUUID('59f0c404-5cb3-11e7-907b-a6006ad3dba0'))─┐
│ 61f0c404-5cb3-11e7-907b-a6006ad3dba0                                                                     │
└──────────────────────────────────────────────────────────────────────────────────────────────────────────┘

변환이 실패하면 기본 UUID를 반환합니다

SELECT toUUIDOrDefault('-----61f0c404-5cb3-11e7-907b-a6006ad3dba0', toUUID('59f0c404-5cb3-11e7-907b-a6006ad3dba0'));
┌─toUUIDOrDefault('-----61f0c404-5cb3-11e7-907b-a6006ad3dba0', toUUID('59f0c404-5cb3-11e7-907b-a6006ad3dba0'))─┐
│ 59f0c404-5cb3-11e7-907b-a6006ad3dba0                                                                          │
└───────────────────────────────────────────────────────────────────────────────────────────────────────────────┘

toUUIDOrNull

도입: v20.12

입력 값을 UUID 타입의 값으로 변환하지만, 오류가 발생하는 경우 NULL을 반환합니다.

toUUID와 동일하지만, 변환 오류 시 예외를 발생시키는 대신 NULL을 반환합니다.

지원되는 인수:

  • 표준 형식의 UUID 문자열 표현(8-4-4-4-12개의 16진수 숫자).
  • 하이픈이 없는 UUID 문자열 표현(32개의 16진수 숫자).

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

  • 잘못된 문자열 형식.
  • 문자열이 아닌 데이터 타입.
  • 올바르지 않은 형식의 UUID.

구문

toUUIDOrNull(x)

인수

  • x — UUID의 문자열 표현. String

반환 값

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

예시

사용 예시

SELECT
    toUUIDOrNull('550e8400-e29b-41d4-a716-446655440000') AS valid_uuid,
    toUUIDOrNull('invalid-uuid') AS invalid_uuid
┌─valid_uuid───────────────────────────┬─invalid_uuid─┐
│ 550e8400-e29b-41d4-a716-446655440000 │         ᴺᵁᴸᴸ │
└──────────────────────────────────────┴──────────────┘