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

Fonction JSON_ARRAYAGG() dans Oracle

Dans Oracle Database, le JSON_ARRAYAGG() La fonction crée un tableau JSON à partir d'une colonne d'expressions SQL.

Syntaxe

La syntaxe ressemble à ceci :

JSON_ARRAYAGG
  ( expr [ FORMAT JSON ]  [ order_by_clause ]
    [ JSON_on_null_clause ] [ JSON_agg_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 ou null .
  • FORMAT JSON indique que la chaîne d'entrée est JSON et ne sera donc pas entre guillemets dans la sortie.
  • order_by_clause vous permet de classer les valeurs JSON dans le tableau JSON renvoyé par l'instruction.
  • JSON_on_null_clause spécifie le comportement à utiliser lorsque expr s'évalue à null (c'est-à-dire qu'il faut inclure ou non des valeurs nulles dans la sortie).
  • JSON_agg_returning_clause spécifie le type de données de la chaîne de caractères renvoyée par cette fonction.
  • 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

Supposons que nous lancions la requête SQL suivante :

SELECT region_name
FROM regions;

Et il renvoie la sortie suivante :

              REGION_NAME 
_________________________ 
Europe                    
Americas                  
Asia                      
Middle East and Africa    

Si nous voulions que toutes ces valeurs soient des éléments dans un tableau JSON, nous pourrions passer le nom de la colonne au JSON_ARRAYAGG() fonction.

Comme ceci :

SELECT JSON_ARRAYAGG(region_name)
FROM regions;

Résultat :

["Europe","Americas","Asia","Middle East and Africa"]

Trier par article

Voici un exemple d'utilisation de ORDER BY clause dans la fonction :

SELECT JSON_ARRAYAGG(
    region_name ORDER BY region_name DESC
    )
FROM regions;

Résultat :

["Middle East and Africa","Europe","Asia","Americas"]

Cet exemple a trié les éléments du tableau par ordre décroissant.

Le voici par ordre croissant :

SELECT JSON_ARRAYAGG(
    region_name ORDER BY region_name ASC
    )
FROM regions;

Résultat :

["Americas","Asia","Europe","Middle East and Africa"]

Consultez la documentation Oracle pour plus d'informations sur cette fonction.