Oracle
 sql >> Base de données >  >> RDS >> Oracle

Fonction JSON_ARRAY() dans Oracle

Dans Oracle Database, le JSON_ARRAY() La fonction crée un tableau JSON à partir d'une séquence d'expressions scalaires SQL ou d'une instance de type de collection, VARRAY ou NESTED TABLE .

Syntaxe

La syntaxe ressemble à ceci :

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

Où :

  • expr est une expression SQL qui évalue un objet JSON, un tableau JSON, un littéral numérique, un littéral de texte, une date, un horodatage ou null .
  • FORMAT JSON indique que la chaîne d'entrée est JSON et ne sera donc pas entre guillemets dans la sortie.
  • JSON_on_null_clause spécifie le comportement à utiliser lorsque expr contient une valeur nulle (c'est-à-dire inclure ou non des valeurs nulles dans la sortie).
  • JSON_returning_clause spécifie le type de valeur de retour.
  • STRICT vérifie si la sortie de la fonction de génération JSON est correcte ou non JSON. Si la vérification échoue, une erreur de syntaxe est générée.

Exemple

Voici un exemple pour illustrer son fonctionnement :

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

Résultat :

[1,2,3]

Imbriqué

Vous pouvez également imbriquer JSON_ARRAY() fonctions dans un autre JSON_ARRAY() fonction :

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

Résultat :

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

Le FORMAT JSON Article

Vous pouvez utiliser le FORMAT JSON clause pour indiquer que la chaîne d'entrée est JSON et ne doit donc pas être entre guillemets dans la sortie.

Voici un exemple pour illustrer :

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

Résultat :

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

Valeurs nulles

Vous pouvez spécifier si les valeurs nulles sont incluses ou non dans le tableau résultant.

Pour les inclure, utilisez NULL ON NULL :

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

Résultat :

[1,null,3]

Pour les exclure, utilisez ABSENT ON NULL :

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

Résultat :

[1,3]

ABSENT ON NULL est la valeur par défaut.

Voir la documentation d'Oracle pour une explication plus détaillée de cette fonction.