Перейти к содержимому
Последнее обновление

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 |
+--------------------------------------+--------------------------------------+