Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Função JSON_ARRAY() no Oracle


No banco de dados Oracle, o JSON_ARRAY() A função cria uma matriz JSON a partir de uma sequência de expressões escalares SQL ou uma instância de tipo de coleção, VARRAY ou NESTED TABLE .

Sintaxe


A sintaxe fica assim:
JSON_ARRAY
  ( expr [ FORMAT JSON ] [, expr [ FORMAT JSON ] ]...
   [ JSON_on_null_clause ] [ JSON_returning_clause ]
   [ STRICT ]  )

Onde:
  • expr é qualquer expressão SQL avaliada como um objeto JSON, uma matriz JSON, um literal numérico, um literal de texto, data, carimbo de data/hora ou null .
  • FORMAT JSON indica que a string de entrada é JSON e, portanto, não será citada na saída.
  • JSON_on_null_clause especifica o comportamento a ser usado quando expr contém um valor nulo (ou seja, inclua valores nulos na saída ou não).
  • JSON_returning_clause especifica o tipo de valor de retorno.
  • STRICT verifica se a saída da função de geração JSON é o JSON correto. Se a verificação falhar, um erro de sintaxe será gerado.

Exemplo


Veja um exemplo para demonstrar como funciona:
SELECT JSON_ARRAY(1, 2, 3) FROM DUAL;

Resultado:
[1,2,3]

Aninhado


Você também pode aninhar JSON_ARRAY() funções dentro de outro JSON_ARRAY() função:
SELECT JSON_ARRAY(
    JSON_ARRAY(1, 2, 3),
    JSON_ARRAY(4, 5, 6)
    )
  FROM DUAL;

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

O FORMAT JSON Cláusula


Você pode usar o FORMAT JSON cláusula para indicar que a string de entrada é JSON e, portanto, não deve ser citada na saída.

Segue um exemplo para demonstrar:
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


Você pode especificar se os valores nulos são incluídos na matriz resultante.

Para incluí-los, use NULL ON NULL :
SELECT 
    JSON_ARRAY(1, null, 3 NULL ON NULL)
FROM DUAL;

Resultado:
[1,null,3]

Para excluí-los, use ABSENT ON NULL :
SELECT 
    JSON_ARRAY(1, null, 3 ABSENT ON NULL)
FROM DUAL;

Resultado:
[1,3]

ABSENT ON NULL é o padrão.

Consulte a documentação da Oracle para obter uma explicação mais detalhada desta função.