Последнее обновление
TO_UUID_OR_DEFAULT
Описание
Преобразует строку в UUID; при некорректном тексте или входном значении NULL возвращает резервный UUID. Если резервный 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. Для корректных входных данных всегда возвращает 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 |
+--------------------------------------+--------------------------------------+