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

Funkcja JSON_OBJECT() w Oracle

W bazie danych Oracle JSON_OBJECT() funkcja tworzy obiekt JSON z sekwencji par klucz-wartość lub jednej instancji typu obiektu.

Składnia

Składnia wygląda tak:

JSON_OBJECT
  ( [ [ KEY ] key_expr VALUE val_expr [ FORMAT JSON ]
     ,]...
    [ JSON_on_null_clause ] [ JSON_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_OBJECT(KEY 'score' VALUE 37) FROM DUAL;

Wynik:

{"score":37}

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

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

Wynik:

{"score":37}

Wiele par klucz/wartość

Oto przykład z wieloma parami klucz/wartość:

SELECT JSON_OBJECT(
    KEY 'fname' VALUE 'Homer',
    KEY 'lname' VALUE 'Escobar',
    KEY 'score' VALUE 237
    ) 
FROM DUAL;

Wynik:

{"fname":"Homer","lname":"Escobar","score":237}

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_OBJECT(
    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_OBJECT(
    KEY 'details' 
    VALUE '{"name": "Peter", "score": 64}'
    ) 
FROM DUAL;

Wynik:

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

Przykład bazy danych

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

SELECT *
FROM regions;

Wynik:

   REGION_ID               REGION_NAME 
____________ _________________________ 
           1 Europe                    
           2 Americas                  
           3 Asia                      
           4 Middle East and Africa    

Oto to samo zapytanie, ale z wybranymi kolumnami przekazanymi do JSON_OBJECT() funkcja:

SELECT JSON_OBJECT(*) 
FROM regions;

Wynik:

{"REGION_ID":1,"REGION_NAME":"Europe"}                    
{"REGION_ID":2,"REGION_NAME":"Americas"}                  
{"REGION_ID":3,"REGION_NAME":"Asia"}                      
{"REGION_ID":4,"REGION_NAME":"Middle East and Africa"}

I tutaj jest tylko jedna kolumna przekazana do funkcji:

SELECT JSON_OBJECT(region_name) 
FROM regions;

Wynik:

{"region_name":"Europe"}                    
{"region_name":"Americas"}                  
{"region_name":"Asia"}                      
{"region_name":"Middle East and Africa"} 

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. Jak usunąć wszystkie tabele użytkowników?

  2. Procedura składowana w przykładzie Oracle z parametrem IN OUT

  3. Odpowiednik Oracle ISNULL()

  4. Pamięć podręczna wyników

  5. Oracle SqlPlus - zapisywanie danych wyjściowych w pliku, ale nie wyświetla się na ekranie