Oracle
 sql >> Database >  >> RDS >> Oracle

JSON_ARRAY() Funzione in Oracle

In Oracle Database, il JSON_ARRAY() La funzione crea un array JSON da una sequenza di espressioni scalari SQL o da un'istanza del tipo di raccolta, VARRAY o NESTED TABLE .

Sintassi

La sintassi è questa:

JSON_ARRAY
  ( expr [ FORMAT JSON ] [, expr [ FORMAT JSON ] ]...
   [ JSON_on_null_clause ] [ JSON_returning_clause ]
   [ STRICT ]  )

Dove:

  • expr è qualsiasi espressione SQL che restituisce un oggetto JSON, un array JSON, un valore letterale numerico, un valore letterale di testo, una data, un timestamp o null .
  • FORMAT JSON indica che la stringa di input è JSON e quindi non sarà tra virgolette nell'output.
  • JSON_on_null_clause specifica il comportamento da utilizzare quando expr contiene un valore nullo (ovvero includere o meno valori null nell'output).
  • JSON_returning_clause specifica il tipo di valore restituito.
  • STRICT controlla se l'output della funzione di generazione JSON è JSON corretto o meno. Se il controllo fallisce, viene generato un errore di sintassi.

Esempio

Ecco un esempio per dimostrare come funziona:

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

Risultato:

[1,2,3]

Nidificato

Puoi anche nidificare JSON_ARRAY() funzioni all'interno di un altro JSON_ARRAY() funzione:

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

Risultato:

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

Il FORMAT JSON Clausola

Puoi usare il FORMAT JSON clausola per indicare che la stringa di input è JSON e pertanto non deve essere tra virgolette nell'output.

Ecco un esempio da dimostrare:

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

Risultato:

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

Valori Nulli

È possibile specificare se i valori null devono essere inclusi o meno nell'array risultante.

Per includerli, usa NULL ON NULL :

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

Risultato:

[1,null,3]

Per escluderli, usa ABSENT ON NULL :

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

Risultato:

[1,3]

ABSENT ON NULL è l'impostazione predefinita.

Consulta la documentazione di Oracle per una spiegazione più dettagliata di questa funzione.