Oracle
 sql >> Baza danych >  >> RDS >> Oracle

JSON_OBJECTAGG() Funkcja w Oracle

W bazie danych Oracle JSON_OBJECTAGG() funkcja tworzy obiekt JSON z pary klucz-wartość.

Zazwyczaj klucz właściwości, wartość właściwości lub obie są kolumnami wyrażeń SQL.

Składnia

Składnia wygląda tak:

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

Gdzie:

  • [ KEY ] key_expr VALUE val_expr określa parę klucz-wartość właściwości.
  • FORMAT JSON wskazuje, że ciąg wejściowy to JSON i dlatego nie będzie cytowany w danych wyjściowych.
  • JSON_on_null_clause określa zachowanie do użycia, gdy expr równa się null (tzn. albo dołącz wartości null do danych wyjściowych, albo nie).
  • JSON_returning_clause określa typ zwracanej wartości.
  • STRICT sprawdza, czy dane wyjściowe funkcji generowania JSON są poprawne w formacie JSON. Jeśli sprawdzenie się nie powiedzie, zgłaszany jest błąd składni.
  • WITH UNIQUE KEYS gwarantuje, że wygenerowane obiekty JSON mają unikalne klucze.

Przykład

Oto przykład pokazujący, jak to działa:

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

Wynik:

{"score":37}

KEY część jest opcjonalna, więc następujące daje ten sam wynik:

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

Wynik:

{"score":37}

Zagnieżdżony JSON

Jeśli jedna z przekazywanych wartości zawiera JSON, możesz użyć FORMAT JSON argument, aby określić, że zawiera JSON i nie powinien być cytowany w danych wyjściowych.

Przykład:

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

Wynik:

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

Oto, co się stanie, jeśli usuniemy FORMAT JSON część:

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

Wynik:

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

Przykład bazy danych

JSON_OBJECTAGG() funkcja jest zwykle używana do tworzenia dokumentów JSON na podstawie wartości w kolumnie bazy danych.

Załóżmy, że uruchamiamy następujące zapytanie:

SELECT *
FROM jobs
WHERE min_salary > 9000;

Wynik:

    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

Oto przykład, jak możemy użyć JSON_OBJECTAGG() funkcja do utworzenia dokumentu JSON z dwóch z powyższych kolumn:

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

Wynik:

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

W tym przypadku job_id kolumna jest kluczem, a min_salary kolumna jest wartością.

Zobacz dokumentację Oracle, aby uzyskać bardziej szczegółowe wyjaśnienie tej funkcji.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle:W PRZYPADKU AKTUALIZACJI ZDUPLIKOWANEGO KLUCZA

  2. Wstaw zbiorczy do Oracle za pomocą .NET

  3. Wycofaj zadeklarowaną transakcję

  4. Utwórz nowego użytkownika Oracle i przyznaj uprawnienia:składnia i przykłady

  5. Zapytanie SQL do przetłumaczenia listy liczb dopasowanych z kilku zakresów na listę wartości