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

Función JSON_ARRAY() en Oracle

En Oracle Database, JSON_ARRAY() La función crea una matriz JSON a partir de una secuencia de expresiones escalares de SQL o una instancia de tipo de colección, VARRAY o NESTED TABLE .

Sintaxis

La sintaxis es así:

JSON_ARRAY
  ( expr [ FORMAT JSON ] [, expr [ FORMAT JSON ] ]...
   [ JSON_on_null_clause ] [ JSON_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, fecha, marca de tiempo o null .
  • FORMAT JSON indica que la cadena de entrada es JSON y, por lo tanto, no se citará en la salida.
  • JSON_on_null_clause especifica el comportamiento a usar cuando expr contiene un valor nulo (es decir, incluye valores nulos en la salida o no).
  • JSON_returning_clause especifica el tipo de valor devuelto.
  • 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

Aquí hay un ejemplo para demostrar cómo funciona:

SELECT JSON_ARRAY(1, 2, 3) FROM DUAL;

Resultado:

[1,2,3]

Anidado

También puede anidar JSON_ARRAY() funciones dentro de otro JSON_ARRAY() función:

SELECT JSON_ARRAY(
    JSON_ARRAY(1, 2, 3),
    JSON_ARRAY(4, 5, 6)
    )
  FROM DUAL;

Resultado:

[[1,2,3],[4,5,6]]

El FORMAT JSON Cláusula

Puedes usar el FORMAT JSON cláusula para indicar que la cadena de entrada es JSON y, por lo tanto, no debe citarse en la salida.

Aquí hay un ejemplo para demostrarlo:

SELECT 
    JSON_ARRAY('{"a":1}') AS r1,
    JSON_ARRAY('{"a":1}' FORMAT JSON) AS r2
FROM DUAL;

Resultado:

              R1           R2 
________________ ____________ 
["{\"a\":1}"]    [{"a":1}]   

Valores nulos

Puede especificar si se incluyen o no valores nulos en la matriz resultante.

Para incluirlos, use NULL ON NULL :

SELECT 
    JSON_ARRAY(1, null, 3 NULL ON NULL)
FROM DUAL;

Resultado:

[1,null,3]

Para excluirlos, use ABSENT ON NULL :

SELECT 
    JSON_ARRAY(1, null, 3 ABSENT ON NULL)
FROM DUAL;

Resultado:

[1,3]

ABSENT ON NULL es el predeterminado.

Consulte la documentación de Oracle para obtener una explicación más detallada de esta función.