Oracle
 sql >> Datenbank >  >> RDS >> Oracle

JSON_ARRAYAGG()-Funktion in Oracle

In der Oracle-Datenbank das JSON_ARRAYAGG() Funktion erstellt ein JSON-Array aus einer Spalte von SQL-Ausdrücken.

Syntax

Die Syntax lautet wie folgt:

JSON_ARRAYAGG
  ( expr [ FORMAT JSON ]  [ order_by_clause ]
    [ JSON_on_null_clause ] [ JSON_agg_returning_clause ]
    [ STRICT ] 
  )

Wo:

  • expr ist ein beliebiger SQL-Ausdruck, der zu einem JSON-Objekt, einem JSON-Array, einem numerischen Literal, einem Textliteral oder null ausgewertet wird .
  • FORMAT JSON gibt an, dass die Eingabezeichenfolge JSON ist und daher in der Ausgabe nicht in Anführungszeichen gesetzt wird.
  • order_by_clause ermöglicht es Ihnen, die JSON-Werte innerhalb des von der Anweisung zurückgegebenen JSON-Arrays zu ordnen.
  • JSON_on_null_clause gibt das zu verwendende Verhalten an, wenn expr wird zu null ausgewertet (d. h. entweder Nullwerte in die Ausgabe aufnehmen oder nicht).
  • JSON_agg_returning_clause gibt den Datentyp der von dieser Funktion zurückgegebenen Zeichenfolge an.
  • STRICT prüft, ob die Ausgabe der JSON-Generierungsfunktion korrektes JSON ist oder nicht. Schlägt die Prüfung fehl, wird ein Syntaxfehler ausgegeben.

Beispiel

Angenommen, wir führen die folgende SQL-Abfrage aus:

SELECT region_name
FROM regions;

Und es gibt die folgende Ausgabe zurück:

              REGION_NAME 
_________________________ 
Europe                    
Americas                  
Asia                      
Middle East and Africa    

Wenn wir wollten, dass all diese Werte Elemente in einem JSON-Array sind, könnten wir den Spaltennamen an JSON_ARRAYAGG() übergeben Funktion.

So:

SELECT JSON_ARRAYAGG(region_name)
FROM regions;

Ergebnis:

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

Order By-Klausel

Hier ist ein Beispiel für die Verwendung von ORDER BY -Klausel innerhalb der Funktion:

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

Ergebnis:

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

In diesem Beispiel wurden die Array-Elemente in absteigender Reihenfolge sortiert.

Hier in aufsteigender Reihenfolge:

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

Ergebnis:

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

Weitere Informationen zu dieser Funktion finden Sie in der Oracle-Dokumentation.