跳到主要内容
最后 更新

TO_UUID_OR_DEFAULT

描述

将字符串转换为 UUID;格式无效或输入为 NULL 时返回指定的默认 UUID,未指定默认值时返回全零 UUID。

别名

toUUIDOrDefault.

使用说明

转换字符串的失败处理不受 enable_strict_cast 影响。可选默认值表达式自身的错误仍会使查询失败。

语法

TO_UUID_OR_DEFAULT(<string>, <default>)
TO_UUID_OR_DEFAULT(<string>)

参数

参数描述
<string>CHAR、VARCHAR 或 STRING 类型的字符串。接受带连字符的 36 字符标准格式或 32 位紧凑十六进制格式,不区分大小写;不接受花括号、首尾空格或其他连字符位置。
<default>可选,UUID 类型的默认值,可为逐行表达式或 NULL;省略时为全零 UUID。建议显式将字符串默认值转换为 UUID。

返回值

返回 UUID 类型。有效输入始终返回解析结果,即使默认值为 NULL。 仅在输入无效或为 NULL 且显式指定的默认值为 NULL 时返回 NULL

示例

SELECT TO_UUID_OR_DEFAULT('550E8400E29B41D4A716446655440000') AS parsed,
TO_UUID_OR_DEFAULT('bad') AS invalid,
TO_UUID_OR_DEFAULT(NULL) AS null_input;
+--------------------------------------+--------------------------------------+--------------------------------------+
| parsed | invalid | null_input |
+--------------------------------------+--------------------------------------+--------------------------------------+
| 550e8400-e29b-41d4-a716-446655440000 | 00000000-0000-0000-0000-000000000000 | 00000000-0000-0000-0000-000000000000 |
+--------------------------------------+--------------------------------------+--------------------------------------+
SELECT TO_UUID_OR_DEFAULT('bad', CAST('550e8400-e29b-41d4-a716-446655440000' AS UUID)) AS fallback,
TO_UUID_OR_DEFAULT(NULL, CAST('550e8400-e29b-41d4-a716-446655440000' AS UUID)) AS null_input,
TO_UUID_OR_DEFAULT('bad', CAST(NULL AS UUID)) AS null_fallback;
+--------------------------------------+--------------------------------------+---------------+
| fallback | null_input | null_fallback |
+--------------------------------------+--------------------------------------+---------------+
| 550e8400-e29b-41d4-a716-446655440000 | 550e8400-e29b-41d4-a716-446655440000 | NULL |
+--------------------------------------+--------------------------------------+---------------+
SELECT TO_UUID_OR_DEFAULT('{550e8400-e29b-41d4-a716-446655440000}') AS braces,
TO_UUID_OR_DEFAULT(' 550e8400-e29b-41d4-a716-446655440000') AS leading_space;
+--------------------------------------+--------------------------------------+
| braces | leading_space |
+--------------------------------------+--------------------------------------+
| 00000000-0000-0000-0000-000000000000 | 00000000-0000-0000-0000-000000000000 |
+--------------------------------------+--------------------------------------+