Последнее обновление
PARSE_TO_VARIANT
Описание
PARSE_TO_VARIANT разбирает одно полное значение JSON и преобразует его в VARIANT. Функция принимает объекты, массивы, строки, числа, логические значения JSON и JSON-литерал null. Эта функция доступна в Doris 4.1.4 и более поздних версиях.
Синтаксис
PARSE_TO_VARIANT(<json_value>)
Параметры
| Параметр | Описание |
|---|---|
<json_value> | Выражение типа CHAR, VARCHAR или STRING, содержащее одно полное значение JSON, либо выражение типа JSON/JSONB. Входные данные JSON/JSONB преобразуются в текст JSON, а затем разбираются как VARIANT. |
Возвращаемое значение
Возвращает значение типа VARIANT.
- Если на вход подано SQL
NULL, возвращается SQLNULL. - Для JSON-литерала
nullвозвращается значение Variant/JSONnull, которое отличается от SQLNULL. - Некорректный JSON, повторяющиеся ключи объекта, отклоняемые текущими настройками валидации, неподдерживаемая глубина вложенности или другая ошибка валидации приводят к ошибке выполнения запроса.
Пример
Разбор текста JSON:
SELECT CAST(
PARSE_TO_VARIANT('{"id": 42, "tags": ["doris", "sql"]}')
AS STRING
) AS value;
+----------------------------------------+
| value |
+----------------------------------------+
| {"id":42,"tags":["doris","sql"]} |
+----------------------------------------+
Разбор выражения JSON/JSONB:
SELECT CAST(
PARSE_TO_VARIANT(CAST('{"id": 42}' AS JSON))
AS STRING
) AS value;
+-----------+
| value |
+-----------+
| {"id":42} |
+-----------+
Извлечение значения и приведение его к конкретному типу SQL с помощью CAST:
SELECT CAST(
PARSE_TO_VARIANT('{"user": {"id": 42}}')['user']['id']
AS BIGINT
) AS user_id;
+---------+
| user_id |
+---------+
| 42 |
+---------+
SQL NULL остаётся SQL NULL:
SELECT PARSE_TO_VARIANT(NULL) IS NULL AS is_sql_null;
+-------------+
| is_sql_null |
+-------------+
| 1 |
+-------------+
Некорректный JSON приводит к ошибке:
SELECT PARSE_TO_VARIANT('{"id":');
ERROR: Parse json document failed
Примечания по использованию
- Используйте TRY_PARSE_TO_VARIANT, если некорректные входные данные должны преобразовываться в SQL
NULL, а не приводить к ошибке выполнения запроса. PARSE_TO_VARIANTявно выполняет разбор JSON. В отличие от этого,CAST(string AS VARIANT)сохраняет входное значение как строку VARIANT и не выполняет разбор JSON; см. правила приведения типов VARIANT.