sql >> Databasteknik >  >> RDS >> Oracle

JSON_ARRAYAGG() Funktion i Oracle

I Oracle Database, JSON_ARRAYAGG() funktionen skapar en JSON-array från en kolumn med SQL-uttryck.

Syntax

Syntaxen ser ut så här:

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

Var:

  • expr är vilket SQL-uttryck som helst som utvärderas till ett JSON-objekt, en JSON-array, en numerisk literal, en text literal eller null .
  • FORMAT JSON indikerar att indatasträngen är JSON och kommer därför inte att citeras i utdata.
  • order_by_clause låter dig beställa JSON-värdena inom JSON-matrisen som returneras av satsen.
  • JSON_on_null_clause anger beteendet som ska användas när expr utvärderas till null (dvs. inkluderar antingen nollvärden i utdata eller inte).
  • JSON_agg_returning_clause anger datatypen för teckensträngen som returneras av den här funktionen.
  • STRICT kontrollerar om utdata från JSON-genereringsfunktionen är korrekt JSON. Om kontrollen misslyckas uppstår ett syntaxfel.

Exempel

Anta att vi kör följande SQL-fråga:

SELECT region_name
FROM regions;

Och det returnerar följande utdata:

              REGION_NAME 
_________________________ 
Europe                    
Americas                  
Asia                      
Middle East and Africa    

Om vi ​​ville att alla dessa värden skulle vara element i en JSON-array kunde vi skicka kolumnnamnet till JSON_ARRAYAGG() funktion.

Så här:

SELECT JSON_ARRAYAGG(region_name)
FROM regions;

Resultat:

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

Beställ enligt klausul

Här är ett exempel på hur du använder ORDER BY sats i funktionen:

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

Resultat:

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

Det exemplet sorterade arrayelementen i fallande ordning.

Här är det i stigande ordning:

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

Resultat:

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

Se Oracle-dokumentationen för mer information om den här funktionen.


  1. Använder row_to_json() med kapslade kopplingar

  2. Hur man väljer med hjälp av WITH RECURSIVE-satsen

  3. Kan SQL Server skicka en webbförfrågan?

  4. MariaDB CURRENT_USER() Förklarad