메인 콘텐츠로 건너뛰기

UUIDv7 생성

생성된 UUID에는 Unix 밀리초 단위의 48비트 타임스탬프가 포함되며, 그 뒤에 버전 “7”(4비트), 동일한 밀리초 내에서 UUID를 구분하기 위한 카운터(42비트, variant 필드 “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 타임스탬프가 밀리초 단위로 들어 있으며(상위 0 비트 41 + 1개), 그 뒤에 머신 ID(10비트)와 1밀리초 내에서 ID를 구분하기 위한 카운터(12비트)가 이어집니다. 각 타임스탬프(unix_ts_ms)에 대해 카운터는 0에서 시작하며, 타임스탬프가 바뀔 때까지 새 Snowflake ID가 생성될 때마다 1씩 증가합니다. 카운터에 오버플로우가 발생하면 타임스탬프 필드가 1 증가하고 카운터는 0으로 재설정됩니다.
생성된 Snowflake ID는 UNIX epoch 1970-01-01을 기준으로 합니다. Snowflake ID의 epoch에 대한 표준이나 권고는 없지만, 다른 시스템의 구현은 서로 다른 epoch를 사용할 수 있습니다. 예를 들어 Twitter/X는 2010-11-04, Mastodon은 2015-01-01을 사용합니다.
 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.0 UUID의 이진 표현을 입력받고, 필요에 따라 variant로 포맷을 지정할 수 있습니다(기본값은 Big-endian). 텍스트 포맷의 36자 문자열을 반환합니다. 구문
UUIDNumToString(binary[, variant])
인수
  • binary — UUID의 이진 표현입니다. FixedString(16)
  • variantRFC4122에서 지정한 variant입니다. 1 = Big-endian(기본값), 2 = Microsoft입니다. (U)Int*
반환 값 UUID를 문자열로 반환합니다. String 예시 사용 예시
Query
SELECT
    'a/<@];!~p{jTj={)' AS bytes,
    UUIDNumToString(toFixedString(bytes, 16)) AS uuid
Response
┌─bytes────────────┬─uuid─────────────────────────────────┐
│ a/<@];!~p{jTj={) │ 612f3c40-5d3b-217e-707b-6a546a3d7b29 │
└──────────────────┴──────────────────────────────────────┘
Microsoft 변형
Query
SELECT
    '@</a;]~!p{jTj={)' AS bytes,
    UUIDNumToString(toFixedString(bytes, 16), 2) AS uuid
Response
┌─bytes────────────┬─uuid─────────────────────────────────┐
│ @</a;]~!p{jTj={) │ 612f3c40-5d3b-217e-707b-6a546a3d7b29 │
└──────────────────┴──────────────────────────────────────┘

UUIDStringToNum

도입 버전: v1.1.0 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx 포맷의 36자 문자열을 받아 해당 문자열의 바이너리 표현인 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) 예시 사용 예시
Query
SELECT
    '612f3c40-5d3b-217e-707b-6a546a3d7b29' AS uuid,
    UUIDStringToNum(uuid) AS bytes
Response
┌─uuid─────────────────────────────────┬─bytes────────────┐
│ 612f3c40-5d3b-217e-707b-6a546a3d7b29 │ a/<@];!~p{jTj={) │
└──────────────────────────────────────┴──────────────────┘
Microsoft 변형
Query
SELECT
    '612f3c40-5d3b-217e-707b-6a546a3d7b29' AS uuid,
    UUIDStringToNum(uuid, 2) AS bytes
Response
┌─uuid─────────────────────────────────┬─bytes────────────┐
│ 612f3c40-5d3b-217e-707b-6a546a3d7b29 │ @</a;]~!p{jTj={) │
└──────────────────────────────────────┴──────────────────┘

UUIDToNum

도입 버전: v24.5.0 UUID를 받아 해당 이진 표현을 FixedString(16)으로 반환하며, variant로 포맷을 선택적으로 지정할 수 있습니다(기본값은 Big-endian). 이 함수는 별도의 두 함수 호출인 UUIDStringToNum(toString(uuid))를 대체하므로, UUID에서 바이트를 추출하기 위해 UUID를 문자열로 중간 변환할 필요가 없습니다. 구문
UUIDToNum(uuid[, variant = 1])
인수 반환 값 UUID의 이진 표현을 반환합니다. FixedString(16) 예시 사용 예시
Query
SELECT
    toUUID('612f3c40-5d3b-217e-707b-6a546a3d7b29') AS uuid,
    UUIDToNum(uuid) AS bytes
Response
┌─uuid─────────────────────────────────┬─bytes────────────┐
│ 612f3c40-5d3b-217e-707b-6a546a3d7b29 │ a/<@];!~p{jTj={) │
└──────────────────────────────────────┴──────────────────┘
Microsoft 변형
Query
SELECT
    toUUID('612f3c40-5d3b-217e-707b-6a546a3d7b29') AS uuid,
    UUIDToNum(uuid, 2) AS bytes
Response
┌─uuid─────────────────────────────────┬─bytes────────────┐
│ 612f3c40-5d3b-217e-707b-6a546a3d7b29 │ @</a;]~!p{jTj={) │
└──────────────────────────────────────┴──────────────────┘

UUIDv7ToDateTime

도입 버전: v24.5.0 UUID 버전 7의 타임스탬프 구성 요소를 반환합니다. 구문
UUIDv7ToDateTime(uuid[, timezone])
인수
  • uuid — UUID 버전 7 값입니다. String
  • timezone — 선택 사항입니다. 반환 값에 사용할 시간대 이름입니다. String
반환 값 밀리초 정밀도의 타임스탬프를 반환합니다. UUID가 유효한 버전 7 UUID가 아니면 1970-01-01 00:00:00.000을 반환합니다. DateTime64(3) 예시 사용 예시
Query
SELECT UUIDv7ToDateTime(toUUID('018f05c9-4ab8-7b86-b64e-c9f03fbd45d1'))
Response
┌─UUIDv7ToDateTime(toUUID('018f05c9-4ab8-7b86-b64e-c9f03fbd45d1'))─┐
│                                          2024-04-22 15:30:29.048 │
└──────────────────────────────────────────────────────────────────┘
시간대 포함
Query
SELECT UUIDv7ToDateTime(toUUID('018f05c9-4ab8-7b86-b64e-c9f03fbd45d1'), 'America/New_York')
Response
┌─UUIDv7ToDateTime(toUUID('018f05c9-4ab8-7b86-b64e-c9f03fbd45d1'), 'America/New_York')─┐
│                                                             2024-04-22 11:30:29.048 │
└─────────────────────────────────────────────────────────────────────────────────────┘

dateTime64ToSnowflake

도입 버전: v21.10.0
이 함수는 더 이상 사용이 권장되지 않으며, 설정 allow_deprecated_snowflake_conversion_functions이 활성화된 경우에만 사용할 수 있습니다. 이 함수는 향후 제거될 예정입니다.대신 dateTime64ToSnowflakeID 함수를 사용하십시오.
DateTime64를 지정된 시각에 해당하는 첫 번째 Snowflake ID로 변환합니다. 구문
dateTime64ToSnowflake(value)
인수
  • value — 시간이 포함된 날짜 및 시간 값입니다. DateTime64
반환 값 입력 값을 해당 시점의 첫 번째 Snowflake ID로 변환한 값을 반환합니다. Int64 예시 사용 예시
Query
WITH toDateTime64('2021-08-15 18:57:56.492', 3, 'Asia/Shanghai') AS dt64 SELECT dateTime64ToSnowflake(dt64);
Response
┌─dateTime64ToSnowflake(dt64)─┐
│         1426860704886947840 │
└─────────────────────────────┘

dateTime64ToSnowflakeID

도입 버전: v24.6.0 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
Query
SELECT dateTime64ToSnowflakeID(toDateTime64('2021-08-15 18:57:56', 3, 'Asia/Shanghai'))
Response
6832626394434895872

dateTimeToSnowflake

도입 버전: v21.10.0
이 함수는 더 이상 사용이 권장되지 않으며, 설정 allow_deprecated_snowflake_conversion_functions이 활성화된 경우에만 사용할 수 있습니다. 이 함수는 향후 어느 시점에 제거될 예정입니다.대신 dateTimeToSnowflakeID 함수를 사용하십시오.
DateTime 값을 지정된 시점의 첫 번째 Snowflake ID로 변환합니다. 구문
dateTimeToSnowflake(value)
인수 반환 값 입력 값을 해당 시점의 첫 번째 Snowflake ID로 반환합니다. Int64 예시 사용 예시
Query
WITH toDateTime('2021-08-15 18:57:56', 'Asia/Shanghai') AS dt SELECT dateTimeToSnowflake(dt);
Response
┌─dateTimeToSnowflake(dt)─┐
│     1426860702823350272 │
└─────────────────────────┘

dateTimeToSnowflakeID

도입 버전: v24.6.0 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로 변환됩니다. 예시 간단한 예시
Query
SELECT dateTimeToSnowflakeID(toDateTime('2021-08-15 18:57:56', 'Asia/Shanghai'))
Response
6832626392367104000

dateTimeToUUIDv7

도입 버전: v25.8.0 지정된 시점의 DateTime 값을 UUIDv7로 변환합니다. UUID 구조, 카운터 관리, 동시성 보장에 대한 자세한 내용은 “UUIDv7 생성” 섹션을 참조하십시오.
2025년 9월 기준으로 버전 7 UUID는 초안 상태이며, 향후 내부 레이아웃이 변경될 수 있습니다.
구문
dateTimeToUUIDv7(value)
인수
  • value — 시간이 포함된 날짜/시간 값. DateTime
반환 값 UUIDv7를 반환합니다. UUID 예시 사용 예시
Query
SELECT dateTimeToUUIDv7(toDateTime('2021-08-15 18:57:56', 'Asia/Shanghai'));
Response
┌─dateTimeToUUIDv7(toDateTime('2021-08-15 18:57:56', 'Asia/Shanghai'))─┐
│ 018f05af-f4a8-778f-beee-1bedbc95c93b                                   │
└─────────────────────────────────────────────────────────────────────────┘
동일한 타임스탬프에 여러 UUID
Query
SELECT dateTimeToUUIDv7(toDateTime('2021-08-15 18:57:56'));
SELECT dateTimeToUUIDv7(toDateTime('2021-08-15 18:57:56'));
Response
┌─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.0 Snowflake ID를 생성합니다. 함수 generateSnowflakeID는 동시에 실행되는 모든 스레드와 쿼리 전반에서 함수가 호출될 때마다 타임스탬프 내 카운터 필드가 단조 증가하도록 보장합니다. 구현 세부 사항은 “Snowflake ID generation” 섹션을 참조하십시오. 구문
generateSnowflakeID([expr, [machine_id]])
인수
  • expr — 쿼리에서 이 함수가 여러 번 호출될 때 공통 하위 표현식 제거를 우회하는 데 사용되는 임의의 표현식입니다. 표현식 값은 반환되는 Snowflake ID에 영향을 주지 않습니다. 선택 사항입니다. - machine_id — 머신 ID입니다. 하위 10비트가 사용됩니다. Int64. 선택 사항입니다.
반환 값 Snowflake ID를 반환합니다. UInt64 예시 사용 예시
Query
CREATE TABLE tab (id UInt64)
ENGINE = MergeTree()
ORDER BY tuple();

INSERT INTO tab SELECT generateSnowflakeID();

SELECT * FROM tab;
Response
┌──────────────────id─┐
│ 7199081390080409600 │
└─────────────────────┘
행마다 여러 개의 Snowflake ID 생성
Query
SELECT generateSnowflakeID(1), generateSnowflakeID(2);
Response
┌─generateSnowflakeID(1)─┬─generateSnowflakeID(2)─┐
│    7199081609652224000 │    7199081609652224001 │
└────────────────────────┴────────────────────────┘
표현식과 머신 ID를 사용
Query
SELECT generateSnowflakeID('expr', 1);
Response
┌─generateSnowflakeID('expr', 1)─┐
│            7201148511606784002 │
└────────────────────────────────┘

generateUUIDv4

도입된 버전: v1.1.0 버전 4 UUID를 생성합니다. 구문
generateUUIDv4([expr])
인수
  • expr — 선택 사항입니다. 함수가 하나의 쿼리에서 여러 번 호출될 때 공통 하위 표현식 제거을 우회하기 위해 사용하는 임의의 표현식입니다. 이 표현식의 값은 반환되는 UUID에 영향을 주지 않습니다.
반환 값 UUIDv4를 반환합니다. UUID 예시 사용 예시
Query
SELECT generateUUIDv4(number) FROM numbers(3);
Response
┌─generateUUIDv4(number)───────────────┐
│ fcf19b77-a610-42c5-b3f5-a13c122f65b6 │
│ 07700d36-cb6b-4189-af1d-0972f23dc3bc │
│ 68838947-1583-48b0-b9b7-cf8268dd343d │
└──────────────────────────────────────┘
공통 하위 표현식 제거
Query
SELECT generateUUIDv4(1), generateUUIDv4(1);
Response
┌─generateUUIDv4(1)────────────────────┬─generateUUIDv4(2)────────────────────┐
│ 2d49dc6e-ddce-4cd0-afb8-790956df54c1 │ 2d49dc6e-ddce-4cd0-afb8-790956df54c1 │
└──────────────────────────────────────┴──────────────────────────────────────┘

generateUUIDv7

도입 버전: v24.5.0 버전 7 UUID를 생성합니다. UUID 구조, 카운터 관리, 동시성 보장에 관한 자세한 내용은 “UUIDv7 생성” 섹션을 참조하십시오.
2025년 9월 기준으로 버전 7 UUID는 초안 상태이며, 향후 레이아웃이 변경될 수 있습니다.
구문
generateUUIDv7([expr])
인수
  • expr — 선택 사항입니다. 함수가 한 쿼리에서 여러 번 호출될 때 공통 하위 표현식 제거를 피하기 위해 사용하는 임의의 표현식입니다. 이 표현식의 값은 반환되는 UUID에 영향을 주지 않습니다. Any
반환 값 UUIDv7을 반환합니다. UUID 예시 사용 예시
Query
SELECT generateUUIDv7(number) FROM numbers(3);
Response
┌─generateUUIDv7(number)───────────────┐
│ 019947fb-5766-7ed0-b021-d906f8f7cebb │
│ 019947fb-5766-7ed0-b021-d9072d0d1e07 │
│ 019947fb-5766-7ed0-b021-d908dca2cf63 │
└──────────────────────────────────────┘
공통 하위 표현식 제거
Query
SELECT generateUUIDv7(1), generateUUIDv7(1);
Response
┌─generateUUIDv7(1)────────────────────┬─generateUUIDv7(1)────────────────────┐
│ 019947ff-0f87-7d88-ace0-8b5b3a66e0c1 │ 019947ff-0f87-7d88-ace0-8b5b3a66e0c1 │
└──────────────────────────────────────┴──────────────────────────────────────┘

snowflakeIDToDateTime

도입 버전: v24.6.0 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 — 선택 사항입니다. 시간대입니다. 함수는 time_string을 시간대에 따라 해석합니다. String
반환 값 value의 timestamp 구성 요소를 반환합니다. DateTime 예시 사용 예시
Query
SELECT snowflakeIDToDateTime(7204436857747984384) AS res
Response
┌─────────────────res─┐
│ 2024-06-06 10:59:58 │
└─────────────────────┘

snowflakeIDToDateTime64

도입 버전: v24.6.0 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 — 선택 사항입니다. 시간대입니다. 이 함수는 time_string을 해당 시간대에 따라 파싱합니다. String
반환 값 value의 타임스탬프 구성 요소를 scale = 3, 즉 밀리초 정밀도의 DateTime64로 반환합니다. DateTime64 예시 사용 예시
Query
SELECT snowflakeIDToDateTime64(7204436857747984384) AS res
Response
┌─────────────────res─┐
│ 2024-06-06 10:59:58 │
└─────────────────────┘

snowflakeToDateTime

도입 버전: v21.10.0
이 함수는 더 이상 권장되지 않으며, 설정 allow_deprecated_snowflake_conversion_functions이 활성화된 경우에만 사용할 수 있습니다. 이 함수는 향후 제거될 예정입니다.대신 snowflakeIDToDateTime 함수를 사용하십시오.
Snowflake ID에서 타임스탬프 구성 요소를 DateTime 형식으로 추출합니다. 구문
snowflakeToDateTime(value[, time_zone])
인수
  • value — Snowflake ID. Int64
  • time_zone — 선택 사항입니다. 시간대. 함수는 time_string을 해당 시간대에 따라 파싱합니다. String
반환 값 value의 타임스탬프 구성 요소를 반환합니다. DateTime 예시 사용 예시
Query
SELECT snowflakeToDateTime(CAST('1426860702823350272', 'Int64'), 'UTC');
Response
┌─snowflakeToDateTime(CAST('1426860702823350272', 'Int64'), 'UTC')─┐
│                                              2021-08-15 10:57:56 │
└──────────────────────────────────────────────────────────────────┘

snowflakeToDateTime64

도입 버전: v21.10.0
이 함수는 지원 중단되었으며, 설정 allow_deprecated_snowflake_conversion_functions이 활성화된 경우에만 사용할 수 있습니다. 이 함수는 향후 어느 시점에 제거될 수 있습니다.대신 snowflakeIDToDateTime64 함수를 사용하십시오.
Snowflake ID의 타임스탬프 부분을 DateTime64 포맷으로 추출합니다. 구문
snowflakeToDateTime64(value[, time_zone])
인수
  • value — Snowflake ID. Int64
  • time_zone — 선택 사항입니다. 시간대입니다. 함수는 time_string을 해당 시간대에 따라 해석합니다. String
반환 값 value의 타임스탬프 구성 요소를 반환합니다. DateTime64(3) 예시 사용 예시
Query
SELECT snowflakeToDateTime64(CAST('1426860802823350272', 'Int64'), 'UTC');
Response
┌─snowflakeToDateTime64(CAST('1426860802823350272', 'Int64'), 'UTC')─┐
│                                            2021-08-15 10:58:19.841 │
└────────────────────────────────────────────────────────────────────┘

toUUIDOrDefault

도입 버전: v21.1.0 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를 반환합니다
Query
SELECT toUUIDOrDefault('61f0c404-5cb3-11e7-907b-a6006ad3dba0', toUUID('59f0c404-5cb3-11e7-907b-a6006ad3dba0'));
Response
┌─toUUIDOrDefault('61f0c404-5cb3-11e7-907b-a6006ad3dba0', toUUID('59f0c404-5cb3-11e7-907b-a6006ad3dba0'))─┐
│ 61f0c404-5cb3-11e7-907b-a6006ad3dba0                                                                     │
└──────────────────────────────────────────────────────────────────────────────────────────────────────────┘
변환이 실패하면 기본 UUID를 반환합니다
Query
SELECT toUUIDOrDefault('-----61f0c404-5cb3-11e7-907b-a6006ad3dba0', toUUID('59f0c404-5cb3-11e7-907b-a6006ad3dba0'));
Response
┌─toUUIDOrDefault('-----61f0c404-5cb3-11e7-907b-a6006ad3dba0', toUUID('59f0c404-5cb3-11e7-907b-a6006ad3dba0'))─┐
│ 59f0c404-5cb3-11e7-907b-a6006ad3dba0                                                                          │
└───────────────────────────────────────────────────────────────────────────────────────────────────────────────┘

toUUIDOrNull

도입 버전: v20.12.0 입력 값을 UUID 타입으로 변환하지만, 오류가 발생하면 NULL을 반환합니다. toUUID와 유사하지만, 변환 오류 시 예외를 발생시키는 대신 NULL을 반환합니다. 지원되는 인수:
  • 표준 포맷(8-4-4-4-12자리 16진수)의 UUID 문자열 표현.
  • 하이픈이 없는 UUID 문자열 표현(32자리 16진수).
지원되지 않는 인수(NULL 반환):
  • 잘못된 문자열 포맷.
  • 문자열이 아닌 타입.
  • 잘못된 형식의 UUID.
구문
toUUIDOrNull(x)
인수
  • x — UUID의 문자열 표현입니다. String
반환 값 성공하면 UUID 값을 반환하고, 실패하면 NULL을 반환합니다. UUID 또는 NULL 예시 사용 예시
Query
SELECT
    toUUIDOrNull('550e8400-e29b-41d4-a716-446655440000') AS valid_uuid,
    toUUIDOrNull('invalid-uuid') AS invalid_uuid
Response
┌─valid_uuid───────────────────────────┬─invalid_uuid─┐
│ 550e8400-e29b-41d4-a716-446655440000 │         ᴺᵁᴸᴸ │
└──────────────────────────────────────┴──────────────┘
마지막 수정일 2026년 6월 10일