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

JSON_ARRAY()-Funktion in Oracle

In der Oracle-Datenbank das JSON_ARRAY() Funktion erstellt ein JSON-Array aus einer Folge von SQL-Skalarausdrücken oder einer Sammlungstypinstanz, VARRAY oder NESTED TABLE .

Syntax

Die Syntax lautet wie folgt:

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

Wo:

  • expr ist ein beliebiger SQL-Ausdruck, der zu einem JSON-Objekt, einem JSON-Array, einem numerischen Literal, einem Textliteral, Datum, Zeitstempel oder null ausgewertet wird .
  • FORMAT JSON gibt an, dass die Eingabezeichenfolge JSON ist und daher in der Ausgabe nicht in Anführungszeichen gesetzt wird.
  • JSON_on_null_clause gibt das zu verwendende Verhalten an, wenn expr einen Nullwert enthält (d. h. entweder Nullwerte in die Ausgabe aufnehmen oder nicht).
  • JSON_returning_clause gibt den Typ des Rückgabewerts 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

Hier ist ein Beispiel, um zu demonstrieren, wie es funktioniert:

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

Ergebnis:

[1,2,3]

Verschachtelt

Sie können JSON_ARRAY() auch verschachteln Funktionen innerhalb eines anderen JSON_ARRAY() Funktion:

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

Ergebnis:

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

Das FORMAT JSON Klausel

Sie können das FORMAT JSON verwenden -Klausel, um anzugeben, dass die Eingabezeichenfolge JSON ist und daher in der Ausgabe nicht in Anführungszeichen gesetzt werden sollte.

Hier ist ein Beispiel zur Veranschaulichung:

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

Ergebnis:

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

Nullwerte

Sie können angeben, ob im resultierenden Array Nullwerte enthalten sind oder nicht.

Um sie einzuschließen, verwenden Sie NULL ON NULL :

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

Ergebnis:

[1,null,3]

Um sie auszuschließen, verwenden Sie ABSENT ON NULL :

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

Ergebnis:

[1,3]

ABSENT ON NULL ist die Standardeinstellung.

Eine ausführlichere Erklärung dieser Funktion finden Sie in der Dokumentation von Oracle.