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 onull
.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 quandoexpr
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.