十八、clickhouse的UUID函数

--1.generateUUIDv4 

--生成版本 4UUID

generateUUIDv4()

返回值

UUID 类型值。

使用示例

此示例演示创建具有 UUID 类型列的表并将值插入表中。

--创建CREATE TABLE t_uuid
(
    `x` UUID
)
ENGINE = TinyLog

Query id: e3b50065-817a-41b9-ae13-e027f4e1b984

Ok.

0 rows in set. Elapsed: 0.002 sec. 

--插入
INSERT INTO t_uuid SELECT generateUUIDv4()

Query id: 6959cf7a-af7a-420d-88e6-5d8a7bf772c9

Ok.

0 rows in set. Elapsed: 0.002 sec. 

--查询
SELECT *
FROM t_uuid

Query id: a9885848-d481-415b-82ca-87677f6303fd

┌─x────────────────────────────────────┐
│ 96434791-6a79-4ba2-b017-218e52963769 │
└──────────────────────────────────────┘

1 rows in set. Elapsed: 0.002 sec. 

 

--2.空

--检查输入 UUID 是否为空。

句法

empty(UUID)

如果 UUID 包含全零(零 UUID),则认为 UUID 为空。

该函数也适用于数组字符串

论据

  • x— 输入 UUID。UUID

返回值

  • 返回1空 UUID0或非空 UUID。

类型:UInt8

例子

为了生成 UUID 值,ClickHouse 提供了generateUUIDv4函数。

SELECT empty(generateUUIDv4())

Query id: 59b648ec-0129-442c-b4d4-2e606faa11ee

┌─empty(generateUUIDv4())─┐
│                       0 │
└─────────────────────────┘

1 rows in set. Elapsed: 0.002 sec. 

 

--3.notEmpty 

--检查输入 UUID 是否为非空。

句法

notEmpty(UUID)

如果 UUID 包含全零(零 UUID),则认为 UUID 为空。

该函数也适用于数组字符串

论据

  • x— 输入 UUID。UUID

返回值

  • 返回1非空 UUID 或0空 UUID。

类型:UInt8

例子

为了生成 UUID 值,ClickHouse 提供了generateUUIDv4函数。

SELECT notEmpty(generateUUIDv4())

Query id: 412745b9-8e90-458e-a367-8400685abec1

┌─notEmpty(generateUUIDv4())─┐
│                          1 │
└────────────────────────────┘

1 rows in set. Elapsed: 0.002 sec. 

 

--4.toUUID (x)

--将 String 类型值转换为 UUID 类型。

toUUID(String)

返回值

UUID 类型值。

使用示例

SELECT toUUID('61f0c404-5cb3-11e7-907b-a6006ad3dba0') AS uuid

Query id: 98ff171e-a2c1-4c4b-b044-c9aa777c02ba

┌─uuid─────────────────────────────────┐
│ 61f0c404-5cb3-11e7-907b-a6006ad3dba0 │
└──────────────────────────────────────┘

1 rows in set. Elapsed: 0.002 sec. 

 

--5.toUUIDorNull (x)

--它接受一个 String 类型的参数并尝试将其解析为 UUID。如果失败,则返回 NULL。

toUUIDOrNull(String)

返回值

Nullable(UUID) 类型值。

使用示例

SELECT toUUIDOrNull('61f0c404-5cb3-11e7-907b-a6006ad3dba0T') AS uuid

Query id: b60153da-34aa-4450-81b9-d967bf39b031

┌─uuid─┐
│ ᴺᵁᴸᴸ │
└──────┘

1 rows in set. Elapsed: 0.002 sec.

 

--6.toUUIDorZero (x) 

--它接受一个 String 类型的参数并尝试将其解析为 UUID。如果失败,则返回零 UUID。

toUUIDOrZero(String)

返回值

UUID 类型值。

使用示例

SELECT toUUIDOrZero('61f0c404-5cb3-11e7-907b-a6006ad3dba0T') AS uuid

Query id: fb818482-7ff1-4808-943d-4548e2f7087d

┌─uuid─────────────────────────────────┐
│ 00000000-0000-0000-0000-000000000000 │
└──────────────────────────────────────┘

1 rows in set. Elapsed: 0.002 sec.

 

--7.UUIDStringToNum 

--接受格式为 36 个字符的字符串xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx,并将其作为FixedString(16)中的一组字节返回。

UUIDStringToNum(String)

返回值

FixedString(16)

使用示例

SELECT
    '612f3c40-5d3b-217e-707b-6a546a3d7b29' AS uuid,
    UUIDStringToNum(uuid) AS bytes

Query id: 7c669a41-6174-4eab-8613-f76487616460

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

1 rows in set. Elapsed: 0.002 sec. 

 

--8.UUIDNumToString 

--接受FixedString(16)值,并以文本格式返回包含 36 个字符的字符串。

UUIDNumToString(FixedString(16))

返回值

String。

使用示例

SELECT
    'a/<@];!~p{jTj={)' AS bytes,
    UUIDNumToString(toFixedString(bytes, 16)) AS uuid

Query id: f5cfccda-c309-4126-9681-97033522d7dd

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

1 rows in set. Elapsed: 0.002 sec. 

 

--9.serverUUID()

--返回随机且唯一的 UUID,该 UUID 在服务器首次启动时生成并永久存储。结果写入uuid在 ClickHouse 服务器目录中创建的文件/var/lib/clickhouse/

句法

服务器UUID()

返回值

  • 服务器的 UUID。

类型:UUID

使用示例

SELECT serverUUID()

Query id: 53f616a7-0d4a-426f-a135-e570cf531ed4

┌─serverUUID()─────────────────────────┐
│ 7807deab-3de7-485e-8290-d472bc47a3a6 │
└──────────────────────────────────────┘

1 rows in set. Elapsed: 0.002 sec. 

 

posted @ 2022-01-18 13:53  渐逝的星光  阅读(3936)  评论(0编辑  收藏  举报