十八、clickhouse的UUID函数
--1.generateUUIDv4
--生成版本 4的UUID。
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.