sql >> Databáze >  >> RDS >> Oracle

Funkce JSON_OBJECTAGG() v Oracle

V databázi Oracle je to JSON_OBJECTAGG() funkce vytvoří objekt JSON z páru klíč–hodnota.

Klíč vlastnosti, hodnota vlastnosti nebo obojí jsou obvykle sloupce výrazů SQL.

Syntaxe

Syntaxe vypadá takto:

JSON_OBJECTAGG
  ( [ KEY ] string VALUE expr [ FORMAT JSON ]
    [ JSON_on_null_clause ] [ JSON_agg_returning_clause ]
    [ STRICT ] [ WITH UNIQUE KEYS ]
  ) 

Kde:

  • [ KEY ] key_expr VALUE val_expr určuje pár klíč–hodnota vlastnosti.
  • FORMAT JSON označuje, že vstupní řetězec je JSON, a proto nebude na výstupu uveden v uvozovkách.
  • JSON_on_null_clause určuje chování, které se má použít, když expr rovná se null (tj. buď zahrnout hodnoty null do výstupu, nebo ne).
  • JSON_returning_clause určuje typ návratové hodnoty.
  • STRICT zkontroluje, zda výstup funkce generování JSON je správný JSON. Pokud kontrola selže, dojde k chybě syntaxe.
  • WITH UNIQUE KEYS zaručuje, že generované objekty JSON mají jedinečné klíče.

Příklad

Zde je příklad demonstrující, jak to funguje:

SELECT JSON_OBJECTAGG(KEY 'score' VALUE 37) FROM DUAL; 

Výsledek:

{"skóre":37}

KEY část je volitelná, takže následující dosáhne stejného výsledku:

SELECT JSON_OBJECTAGG('score' VALUE 37) FROM DUAL; 

Výsledek:

{"skóre":37}

Vnořený JSON

Pokud jedna z předávaných hodnot obsahuje JSON, můžete použít FORMAT JSON argument k určení, že obsahuje JSON a neměl by být ve výstupu citován.

Příklad:

SELECT JSON_OBJECTAGG(
    KEY 'details' 
    VALUE '{"name": "Peter", "score": 64}' 
    FORMAT JSON
    ) 
FROM DUAL; 

Výsledek:

{"details":{"name":"Petr", "skóre":64}}

Co se stane, když odstraníme FORMAT JSON část:

SELECT JSON_OBJECTAGG(
    KEY 'details' 
    VALUE '{"name": "Peter", "score": 64}'
    ) 
FROM DUAL; 

Výsledek:

{"detaily":"{\"jméno\":\"Petr\", \"skóre\":64}"} 

Příklad databáze

JSON_OBJECTAGG() Funkce se obvykle používá k vytváření dokumentů JSON na základě hodnot ve sloupci databáze.

Předpokládejme, že spustíme následující dotaz:

SELECT *
FROM jobs
WHERE min_salary > 9000; 

Výsledek:

job_id job_title min_salary max_salary __________ ____________________________ _____________ _____________ AD_PRES President 20000 40000 AD_VP Správa viceprezidenta 15000 30000 SA_MAN SEETAL MANAGER 10000 20000

Zde je příklad, jak můžeme použít JSON_OBJECTAGG() funkce k vytvoření dokumentu JSON ze dvou výše uvedených sloupců:

SELECT JSON_OBJECTAGG(KEY job_id VALUE min_salary) 
FROM jobs
WHERE min_salary > 9000; 

Výsledek:

{"AD_PRES":20000,"AD_VP":15000,"SA_MAN":10000}

V tomto případě job_id sloupec je klíč a min_salary sloupec je hodnota.

Podrobnější vysvětlení této funkce najdete v dokumentaci Oracle.


  1. Jaký je nejlepší způsob, jak postupně odstranit staré řádky z MySQL?

  2. Jak nainstalovat databázi MariaDB v Debianu 10

  3. Jak změnit výchozí profil pošty databáze pro uživatele v SQL Server (T-SQL)

  4. Jak získat definici vypočítaného sloupce v SQL Server pomocí T-SQL