JSON_EACH_TEXT_OUTER
Описание
Табличная функция json_each_text_outer разворачивает JSON-объект верхнего уровня в набор пар ключ/значение. Каждая строка содержит один ключ (key) и соответствующее ему значение (value). В отличие от json_each_outer, здесь столбец value имеет тип TEXT, поэтому строковые значения возвращаются без кавычек JSON.
В отличие от json_each_text, при входном значении NULL или пустом объекте json_each_text_outer возвращает одну строку NULL, NULL вместо 0 строк.
Необходимо использовать с LATERAL VIEW.
Синтаксис
JSON_EACH_TEXT_OUTER(<json_str>)
Параметры
| Параметр | Описание |
|---|---|
<json_str> | JSON-строка для разворачивания. Содержимое должно быть JSON-объектом. |
Возвращаемое значение
Возвращает данные в нескольких столбцах и строках. Каждая строка соответствует одной паре ключ/значение в JSON-объекте:
| Столбец | Тип | Описание |
|---|---|---|
key | TEXT | Имя ключа из JSON-объекта |
value | TEXT | Соответствующее значение в виде обычного текста (строковые значения без кавычек, например foo) |
Особые случаи:
- Если
<json_str>равен NULL, возвращается 1 строкаNULL, NULL - Если
<json_str>— пустой объект ({}), возвращается 1 строкаNULL, NULL - Значение JSON
nullвозвращается как SQLNULL
Примеры
Базовое использование: разворачивание JSON-объекта со строковыми значениями
SELECT k, v
FROM (SELECT 1) dummy
LATERAL VIEW json_each_text_outer('{"a":"foo","b":"bar"}') t AS k, v;
+---+-----+
| k | v |
+---+-----+
| a | foo |
| b | bar |
+---+-----+
Столбец
valueимеет тип TEXT, поэтому строковые значения возвращаются без кавычек JSON (в отличие отjson_each_outer).
Параметр NULL: возвращается 1 строка со значениями NULL
SELECT k, v
FROM (SELECT 1) dummy
LATERAL VIEW json_each_text_outer(NULL) t AS k, v;
+------+------+
| k | v |
+------+------+
| NULL | NULL |
+------+------+
Пустой объект: возвращается 1 строка со значениями NULL
SELECT k, v
FROM (SELECT 1) dummy
LATERAL VIEW json_each_text_outer('{}') t AS k, v;
+------+------+
| k | v |
+------+------+
| NULL | NULL |
+------+------+