当 您在 SQL编辑器中输入查询或创建 计算时,您将使用 PrestoSQL语法。要调整 JavaScript 对象表示法 (JSON) 数组和值,您可能会发现以下常用函数很有用。
JSON_ARRAY_LENGTH
要返回 JSON 数组的值的数量(或 长度 ) ,请使用 JSON_ARRAY_LENGTH 函数,例如:
json_array_length(json) → bigint
例如, SELECT json_array_length('[a, b, c]'); 返回长度为 3。
JSON_ARRAY_GET
要根据从零开始的索引返回 JSON 数组的值,请使用 JSON_ARRAY_GET 函数,例如:
json_array_get(json_array, index) → json
例如:
-
SELECT json_array_get('["a", "b", "c"]', 0);返回'a' -
SELECT json_array_get('["a", "b", "c"]', 1);返回'b'
要返回从数组末尾 开始索引的值,可以使用负索引。例如:
-
SELECT json_array_get('["c", "b", "a"]', -1);返回'a' -
SELECT json_array_get('["c", "b", "a"]', -2);返回'b'
如果在指定的索引处不存在 元素, 则该函数返回 null。例如:
-
SELECT json_array_get('[]', 0);返回null -
SELECT json_array_get('["a", "b", "c"]', 10);返回null -
SELECT json_array_get('["c", "b", "a"]', -10);返回null
JSON_EXTRACT
要评估包含 JSON 的字符串的类似 JSONPath 的表达式,并将结果以 JSON 编码的字符串形式返回,请使用 JSON_EXTRACT函数,例如:
json_extract(json, json_path) → json
例如:
SELECT json_extract(json, '$.store.book');
注意: 要以字符串形式返回结果 ,而不是以 JSON编码的形式返回,请改用 JSON_EXTRACT_SCALAR 函数。
JSON_EXTRACT_SCALAR
要计算包含 JSON 并引用标量值(文本、布尔值或数字)的字符串的类似 JSONPath 的表达式,并将结果作为字符串返回,请使用 JSON_EXTRACT_SCALAR函数,例如:
json_extract_scalar(json, json_path) → varchar
例如:
SELECT json_extract_scalar(json, '$.store.book[0].author');
SELECT json_extract_scalar('[1, 2, 3]', '$[2]'); 注意: 要将结果以 JSON 编码的字符串形式返回,请改用 JSON_EXTRACT 函数。
JSON 格式
要将 JSON 语法的值作为字符串返回,请使用 JSON_FORMAT函数,例如:
json_format(json) → varchar
例如:
-
SELECT json_format(json '[1, 2, 3]');返回' [1, 2, 3]' -
SELECT json_format(json '"a"');返回'"a"'
提示: JSON_FORMAT函数是 JSON_PARSE 函数 的逆函数
。 JSON_PARSE
要将字符串解析为 JSON 语法,请使用 JSON_PARSE 函数,例如:
json_parse(string) → json
例如, SELECT json_parse('[1, 2, 3]'); 返回 JSON '[1, 2, 3]'
提示: JSON_PARSE 函数是 JSON_FORMAT函数 的逆函数
。 W_JSON_ARRAY_JOIN
要将 JSON 数组的值作为分隔符字符串返回,请使用 W_JSON_ARRAY_JOIN 函数,例如:
w_json_array_join(array, 'delimiter') → varchar