sql >> Databasteknik >  >> RDS >> Oracle

JSON_ARRAY() Funktion i Oracle

I Oracle Database, JSON_ARRAY() funktionen skapar en JSON-array från en sekvens av SQL-skalära uttryck eller en samlingstypsinstans, VARRAY eller NESTED TABLE .

Syntax

Syntaxen ser ut så här:

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

Var:

  • expr är vilket SQL-uttryck som helst som utvärderas till ett JSON-objekt, en JSON-matris, en numerisk literal, en text literal, datum, tidsstämpel eller null .
  • FORMAT JSON indikerar att indatasträngen är JSON och kommer därför inte att citeras i utdata.
  • JSON_on_null_clause anger beteendet som ska användas när expr innehåller ett nollvärde (dvs. inkluderar antingen nollvärden i utdata eller inte).
  • JSON_returning_clause anger typen av returvärde.
  • STRICT kontrollerar om utdata från JSON-genereringsfunktionen är korrekt JSON. Om kontrollen misslyckas uppstår ett syntaxfel.

Exempel

Här är ett exempel för att visa hur det fungerar:

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

Resultat:

[1,2,3]

Inkapslade

Du kan också kapsla JSON_ARRAY() fungerar inom en annan JSON_ARRAY() funktion:

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

Resultat:

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

FORMAT JSON Klausul

Du kan använda FORMAT JSON sats för att indikera att indatasträngen är JSON, och bör därför inte citeras i utdata.

Här är ett exempel att visa:

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

Resultat:

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

Nullvärden

Du kan ange om null-värden ska inkluderas i den resulterande arrayen.

För att inkludera dem, använd NULL ON NULL :

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

Resultat:

[1,null,3]

För att utesluta dem, använd ABSENT ON NULL :

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

Resultat:

[1,3]

ABSENT ON NULL är standard.

Se Oracles dokumentation för en mer detaljerad förklaring av denna funktion.


  1. SQL JOIN vs IN prestanda?

  2. oönskat inledande blanksteg i orakelnummerformat

  3. Kör en dynamisk korstabellsfråga

  4. SÄTT IN VÄRDEN DÄR INTE FINNS