← Cloudflare Pipelines / pipelines / sql-reference / scalar-functions
Функции JSON
Cloudflare Pipelines предоставляет два набора функций JSON. Первый основан на функциях и синтаксисе SQL в PostgreSQL, а второй на JSONPath ↗ стандарт.
Функции SQL
SQL функции предоставляют базовые функции для разбора JSON, аналогичные функциям в PostgreSQL.
json_contains
Возвращает true если строка JSON содержит указанный ключ (или ключи).
SELECT json_contains('{"a": 1, "b": 2, "c": 3}', 'a') FROM source;
trueТакже доступно через ? оператор:
SELECT '{"a": 1, "b": 2, "c": 3}' ? 'a' FROM source;
truejson_get
Извлекает значение из строки JSON по указанному пути (ключам). Возвращает значение в его исходном типе (string, int и т.д.).
SELECT json_get('{"a": {"b": 2}}', 'a', 'b') FROM source;
2Также доступно через -> оператор:
SELECT '{"a": {"b": 2}}'->'a'->'b' FROM source;
2Различные комбинации json_get функции доступны для получения значений в
конкретном типе, либо можно использовать аннотации типов SQL:
SELECT json_get('{"a": {"b": 2}}', 'a', 'b')::int FROM source;
2json_get_str
Извлекает строковое значение из строки JSON по указанному пути. Возвращает пустую строку, если значение не существует или не является строкой.
SELECT json_get_str('{"a": {"b": "hello"}}', 'a', 'b') FROM source;
"hello"json_get_int
Извлекает целочисленное значение из строки JSON по указанному пути. Возвращает 0
если значение не существует или не является целым числом.
SELECT json_get_int('{"a": {"b": 42}}', 'a', 'b') FROM source;
42json_get_float
Извлекает значение с плавающей точкой из строки JSON по указанному пути. Возвращает 0.0
если значение не существует или не является числом с плавающей точкой.
SELECT json_get_float('{"a": {"b": 3.14}}', 'a', 'b') FROM source;
3.14json_get_bool
Извлекает логическое значение из строки JSON по указанному пути. Возвращает
false если значение отсутствует или не является булевым значением.
SELECT json_get_bool('{"a": {"b": true}}', 'a', 'b') FROM source;
truejson_get_json
Извлекает вложенную JSON-строку из строки JSON по указанному пути. Значение возвращается в виде необработанного JSON.
SELECT json_get_json('{"a": {"b": {"c": 1}}}', 'a', 'b') FROM source;
'{"c": 1}'json_as_text
Извлекает любое значение из строки JSON по указанному пути и возвращает его в виде строки, независимо от исходного типа.
SELECT json_as_text('{"a": {"b": 42}}', 'a', 'b') FROM source;
"42"Также доступно через ->> оператор:
SELECT '{"a": {"b": 42}}'->>'a'->>'b' FROM source;
"42"json_length
Возвращает длину объекта или массива JSON по указанному пути. Возвращает 0
если путь не существует или не указывает на объект/массив.
SELECT json_length('{"a": [1, 2, 3]}', 'a') FROM source;
3Функции Json path
Функции JSON предоставляют базовые функции разбора JSON с использованием JsonPath ↗, развивающийся стандарт для запросов к объектам JSON.
extract_json
Возвращает элементы JSON из первого аргумента, соответствующие JsonPath во втором аргументе. Возвращаемое значение представляет собой массив строк JSON.
SELECT extract_json('{"a": 1, "b": 2, "c": 3}', '$.a') FROM source;
['1']extract_json_string
Возвращает неэкранированную строку для первого элемента, соответствующего JsonPath, если это строка.
SELECT extract_json_string('{"a": "a", "b": 2, "c": 3}', '$.a') FROM source;
'a'