sql >> Base de Datos >  >> RDS >> Oracle

Función JSON_ARRAYAGG() en Oracle

En Oracle Database, el JSON_ARRAYAGG() La función crea una matriz JSON a partir de una columna de expresiones SQL.

Sintaxis

La sintaxis es así:

JSON_ARRAYAGG
  ( expr [ FORMAT JSON ]  [ order_by_clause ]
    [ JSON_on_null_clause ] [ JSON_agg_returning_clause ]
    [ STRICT ] 
  )

Dónde:

  • expr es cualquier expresión SQL que se evalúa como un objeto JSON, una matriz JSON, un literal numérico, un literal de texto o null .
  • FORMAT JSON indica que la cadena de entrada es JSON y, por lo tanto, no se citará en la salida.
  • order_by_clause le permite ordenar los valores JSON dentro de la matriz JSON devuelta por la instrucción.
  • JSON_on_null_clause especifica el comportamiento a usar cuando expr se evalúa como nulo (es decir, incluye valores nulos en la salida o no).
  • JSON_agg_returning_clause especifica el tipo de datos de la cadena de caracteres devuelta por esta función.
  • STRICT comprueba si la salida de la función de generación de JSON es JSON correcta o no. Si la comprobación falla, se genera un error de sintaxis.

Ejemplo

Supongamos que ejecutamos la siguiente consulta SQL:

SELECT region_name
FROM regions;

Y devuelve el siguiente resultado:

              REGION_NAME 
_________________________ 
Europe                    
Americas                  
Asia                      
Middle East and Africa    

Si quisiéramos que todos esos valores fueran elementos en una matriz JSON, podríamos pasar el nombre de la columna a JSON_ARRAYAGG() función.

Así:

SELECT JSON_ARRAYAGG(region_name)
FROM regions;

Resultado:

["Europe","Americas","Asia","Middle East and Africa"]

Ordenar por cláusula

Aquí hay un ejemplo del uso de ORDER BY cláusula dentro de la función:

SELECT JSON_ARRAYAGG(
    region_name ORDER BY region_name DESC
    )
FROM regions;

Resultado:

["Middle East and Africa","Europe","Asia","Americas"]

Ese ejemplo ordenó los elementos de la matriz en orden descendente.

Aquí está en orden ascendente:

SELECT JSON_ARRAYAGG(
    region_name ORDER BY region_name ASC
    )
FROM regions;

Resultado:

["Americas","Asia","Europe","Middle East and Africa"]

Consulte la documentación de Oracle para obtener más información sobre esta función.