Cuando ingresas tu consulta en el Editor SQL o creas un cálculo, utilizas la Sintaxis Presto SQL. Para ajustar matrices y valores de Notación de Objetos JavaScript (JSON), te pueden resultar útiles estas funciones comunes.
JSON_ARRAY_LENGTH
Para devolver el número de valores (o la longitud) de una matriz JSON, utiliza la función JSON_ARRAY_LENGTH, como:
json_array_length(json) → bigint
Por ejemplo, SELECT json_array_length('[a, b, c]'); devuelve una longitud de 3.
JSON_ARRAY_GET
Para devolver un valor de una matriz JSON basado en un índice de base cero, utiliza la función JSON_ARRAY_GET, como:
json_array_get(json_array, índice) → json
Por ejemplo:
-
SELECT json_array_get('["a", "b", "c"]', 0);devuelve'a' -
SELECT json_array_get('["a", "b", "c"]', 1);devuelve'b'
Para devolver valores indexados desde el final de la matriz, puedes utilizar índices negativos. Por ejemplo:
-
SELECT json_array_get('["c", "b", "a"]', -1);devuelve'a' -
SELECT json_array_get('["c", "b", "a"]', -2);devuelve'b'
Si no existe ningún elemento en el índice especificado, la función devuelve nulo. Por ejemplo:
-
SELECT json_array_get('[]', 0);devuelvenull -
SELECT json_array_get('["a", "b", "c"]', 10);devuelvenull -
SELECT json_array_get('["c", "b", "a"]', -10);devuelvenull
JSON_EXTRACT
Para evaluar la expresión tipo JSONPath de una cadena que contiene JSON y devolver los resultados como una cadena codificada como JSON, utiliza la función JSON_EXTRACT, como por ejemplo:
json_extract(json, json_path) → json
Por ejemplo:
SELECT json_extract(json, '$.store.book');
Nota: Para devolver un resultado como una cadena sin JSON codificado, usa la función JSON_EXTRACT_SCALAR.
JSON_EXTRACT_SCALAR
Para evaluar la expresión tipo JSONPath de una cadena que contiene JSON y hace referencia a un valor escalar -texto, booleano o numérico-, y devolver los resultados como una cadena, utiliza la función JSON_EXTRACT_SCALAR, por ejemplo:
json_extract_scalar(json, json_ruta) → varchar
Por ejemplo:
SELECT json_extract_scalar(json, '$.store.book[0].author');
SELECT json_extract_scalar('[1, 2, 3]', '$[2]'); Nota: Para devolver un resultado como una cadena con JSON codificado, usa la función JSON_EXTRACT.
JSON_FORMAT
Para devolver los valores de la sintaxis JSON como una cadena, utiliza la función JSON_FORMAT, como por ejemplo:
json_format(json) → varchar
Por ejemplo:
-
SELECT json_format(json '[1, 2, 3]');devuelve'[1, 2, 3]' -
SELECT json_format(json '"a"');devuelve'"a"'
Consejo: La función JSON_FORMAT es la inversa de la función JSON_PARSE.
JSON_PARSE
Para analizar una cadena como sintaxis JSON, utiliza la función JSON_PARSE, como por ejemplo
json_parse(cadena) → json
Por ejemplo, SELECT json_parse('[1, 2, 3]'); devuelve JSON '[1, 2, 3]'
Consejo: La función JSON_PARSE es la inversa de la función JSON_FORMAT.
W_JSON_ARRAY_JOIN
Para devolver los valores de una matriz JSON como cadena delimitada, utiliza la función W_JSON_ARRAY_JOIN, como:
w_json_array_join(array, 'delimitador') → varchar