Последнее обновление
TRY_PARSE_TO_VARIANT
Описание
TRY_PARSE_TO_VARIANT пытается разобрать одно полное значение JSON и преобразовать его в VARIANT. Префикс TRY_ означает, что при ошибке разбора или проверки возвращается SQL NULL, а выполнение запроса не завершается с ошибкой. Эта функция доступна в Doris 4.1.4 и более поздних версиях.
Синтаксис
TRY_PARSE_TO_VARIANT(<json_value>)
Параметры
| Параметр | Описание |
|---|---|
<json_value> | Выражение типа CHAR, VARCHAR или STRING, содержащее одно полное значение JSON, либо выражение типа JSON/JSONB. Входные данные JSON/JSONB преобразуются в текст JSON, который затем разбирается и преобразуется в VARIANT. |
Возвращаемое значение
Возвращает значение типа VARIANT, которое может быть NULL.
- Для корректных входных данных возвращается значение VARIANT, полученное в результате разбора.
- При некорректном JSON или другой ошибке разбора или проверки возвращается SQL
NULL. - Если на вход передан SQL
NULL, возвращается SQLNULL. - Корректный литерал JSON
nullвозвращает Variant/JSONnull, а не SQLNULL.
Пример
Сохранение корректных значений и преобразование некорректного JSON в SQL NULL:
SELECT CAST(
TRY_PARSE_TO_VARIANT('{"id": 1}')
AS STRING
) AS valid_value,
TRY_PARSE_TO_VARIANT('{"id":') IS NULL AS invalid_is_null,
TRY_PARSE_TO_VARIANT(NULL) IS NULL AS input_is_null;
+-------------+-----------------+---------------+
| valid_value | invalid_is_null | input_is_null |
+-------------+-----------------+---------------+
| {"id":1} | 1 | 1 |
+-------------+-----------------+---------------+
Разбор входных данных JSON/JSONB:
SELECT CAST(
TRY_PARSE_TO_VARIANT(CAST('[10, 20, 30]' AS JSON))
AS STRING
) AS value;
+------------+
| value |
+------------+
| [10,20,30] |
+------------+
JSON null и SQL NULL остаются различными значениями:
SELECT TRY_PARSE_TO_VARIANT('null') IS NULL AS json_null_is_sql_null,
TRY_PARSE_TO_VARIANT('{') IS NULL AS error_is_sql_null;
+-----------------------+-------------------+
| json_null_is_sql_null | error_is_sql_null |
+-----------------------+-------------------+
| 0 | 1 |
+-----------------------+-------------------+
Примечания по использованию
- Используйте PARSE_TO_VARIANT, если при некорректных входных данных запрос должен завершаться с ошибкой, указывающей на проблему с качеством данных.
- Эта функция преобразует в SQL
NULLтолько ошибки разбора и проверки; смысл корректного значения JSONnullне меняется.