UUID 数据类型
存储通用唯一标识符 (UUID)。UUID 是用于唯一标识记录的 16 字节(128 位)数字。为了生成 UUID,Vertica 提供了函数
UUID_GENERATE
,该函数根据高质量随机性从 /dev/urandom
返回 UUID。
语法
UUID
UUID 输入和输出格式
UUID 支持输入不区分大小写的字符串字面量格式,如 RFC 4122 所指定。通常,UUID 被写为十六进制数字序列,在可选地由连字符分隔的几个组中,总共 32 个数字代表 128 位。
以下输入格式有效:
6bbf0744-74b4-46b9-bb05-53905d4538e7
{6bbf0744-74b4-46b9-bb05-53905d4538e7}
6BBF074474B446B9BB0553905D4538E7
6BBf-0744-74B4-46B9-BB05-5390-5D45-38E7
在输出时,Vertica 始终使用以下格式:
xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
例如,下表将列 cust_id
定义为 UUID:
=> CREATE TABLE public.Customers
(
cust_id uuid,
lname varchar(36),
fname varchar(24)
);
cust_id
的以下输入使用了几种有效格式:
=> COPY Customers FROM STDIN;
Enter data to be copied followed by a newline.
End with a backslash and a period on a line by itself.
>> {cede66b7-3d29-4da6-b700-871fc0ac57be}|Kearney|Thomas
>> 34462732ed5649838f3be735b0c32d50|Pham|Duc
>> 9fb0-1de0-1d63-4d09-9415-90e0-b4e9-3b9a|Steinberg|Jeremy
>> \.
在查询此表时,Vertica 以相同的方式格式化所有 cust_id
数据:
=> SELECT cust_id, fname, lname FROM Customers;
cust_id | fname | lname
--------------------------------------+--------+-----------
9fb01de0-1d63-4d09-9415-90e0b4e93b9a | Jeremy | Steinberg
34462732-ed56-4983-8f3b-e735b0c32d50 | Duc | Pham
cede66b7-3d29-4da6-b700-871fc0ac57be | Thomas | Kearney
(3 rows)
生成 UUID
您可以使用 Vertica 函数
UUID_GENERATE
自动生成唯一标识表记录的 UUID。例如:
=> INSERT INTO Customers SELECT UUID_GENERATE(),'Rostova','Natasha';
OUTPUT
--------
1
(1 row)
=> COMMIT;
COMMIT
=> SELECT cust_id, fname, lname FROM Customers;
cust_id | fname | lname
--------------------------------------+---------+-----------
9fb01de0-1d63-4d09-9415-90e0b4e93b9a | Jeremy | Steinberg
34462732-ed56-4983-8f3b-e735b0c32d50 | Duc | Pham
cede66b7-3d29-4da6-b700-871fc0ac57be | Thomas | Kearney
9aad6757-fe1b-473a-a109-b89b7b358c69 | Natasha | Rostova
(4 rows)
NULL 输入和输出
以下字符串为 UUID 列保留为 NULL:
00000000-0000-0000-0000-000000000000
Vertica 始终将 NULL 呈现为空白。
以下 COPY
语句将 NULL 值显式和隐式插入到 UUID 列中:
=> COPY Customers FROM STDIN NULL AS 'null';
Enter data to be copied followed by a newline.
End with a backslash and a period on a line by itself.
>> null|Doe|Jane
>> 00000000-0000-0000-0000-000000000000|Man|Nowhere
>> \.
=> COPY Customers FROM STDIN;
>> |Doe|John
>> \.
在所有情况下,Vertica 都将 NULL 呈现为空白:
=> SELECT cust_id, fname, lname FROM Customers WHERE cust_id IS NULL;
cust_id | fname | lname
---------+---------+-------
| Nowhere | Man
| Jane | Doe
| John | Doe
(3 rows)
使用限制
UUID 数据类型仅支持也受 CHAR 和 VARCHAR 数据类型支持的关系运算符和函数,例如
MIN
、
MAX
和
COUNT
。UUID 数据类型不支持数学运算符或函数,例如
SUM
和
AVG
。