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

JSON_OBJECTAGG()-Funktion in Oracle

In Oracle Database das JSON_OBJECTAGG() Funktion erstellt ein JSON-Objekt aus einem Schlüssel-Wert-Paar.

Typischerweise sind der Eigenschaftsschlüssel, der Eigenschaftswert oder beide Spalten von SQL-Ausdrücken.

Syntax

Die Syntax sieht so aus:

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

Wo:

  • [ KEY ] key_expr VALUE val_expr gibt ein Eigenschafts-Schlüssel-Wert-Paar an.
  • 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 entspricht null (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.
  • WITH UNIQUE KEYS garantiert, dass generierte JSON-Objekte eindeutige Schlüssel haben.

Beispiel

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

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

Ergebnis:

{"score":37}

Der KEY part ist optional, daher führt Folgendes zum gleichen Ergebnis:

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

Ergebnis:

{"score":37}

Verschachteltes JSON

Wenn einer der übergebenen Werte JSON enthält, können Sie FORMAT JSON verwenden -Argument, um anzugeben, dass es JSON enthält und in der Ausgabe nicht in Anführungszeichen gesetzt werden soll.

Beispiel:

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

Ergebnis:

{"details":{"name": "Peter", "score": 64}}

Folgendes passiert, wenn wir FORMAT JSON entfernen Teil:

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

Ergebnis:

{"details":"{\"name\": \"Peter\", \"score\": 64}"} 

Datenbankbeispiel

Der JSON_OBJECTAGG() Die Funktion wird normalerweise verwendet, um JSON-Dokumente basierend auf den Werten in einer Datenbankspalte zu erstellen.

Angenommen, wir führen die folgende Abfrage aus:

SELECT *
FROM jobs
WHERE min_salary > 9000;

Ergebnis:

    JOB_ID                        JOB_TITLE    MIN_SALARY    MAX_SALARY 
__________ ________________________________ _____________ _____________ 
AD_PRES    President                                20000         40000 
AD_VP      Administration Vice President            15000         30000 
SA_MAN     Sales Manager                            10000         20000

Hier ist ein Beispiel dafür, wie wir JSON_OBJECTAGG() verwenden können Funktion zum Erstellen eines JSON-Dokuments aus zwei der obigen Spalten:

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

Ergebnis:

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

In diesem Fall die job_id Spalte ist der Schlüssel und das min_salary Spalte ist der Wert.

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