Oracle
 sql >> база данни >  >> RDS >> Oracle

Функция JSON_OBJECT() в Oracle

В Oracle Database, JSON_OBJECT() функцията създава JSON обект от поредица от двойки ключ-стойност или един екземпляр от тип обект.

Синтаксис

Синтаксисът е така:

JSON_OBJECT
  ( [ [ KEY ] key_expr VALUE val_expr [ FORMAT JSON ]
     ,]...
    [ JSON_on_null_clause ] [ JSON_returning_clause ]
    [ STRICT ] 
    [ WITH UNIQUE KEYS ]  )

Къде:

  • [ KEY ] key_expr VALUE val_expr определя двойка ключ-стойност на свойството.
  • FORMAT JSON показва, че входният низ е JSON и следователно няма да бъде в кавички в изхода.
  • JSON_on_null_clause определя поведението, което да се използва, когато expr се равнява на null (т.е. или включва нулеви стойности в изхода, или не).
  • JSON_returning_clause определя типа на връщаната стойност.
  • STRICT проверява дали изходът на функцията за генериране на JSON е правилен JSON. Ако проверката не успее, се появява синтактична грешка.
  • WITH UNIQUE KEYS гарантира, че генерираните JSON обекти имат уникални ключове.

Пример

Ето пример, за да демонстрирате как работи:

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

Резултат:

{"score":37}

KEY част не е задължителна, така че следното постига същия резултат:

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

Резултат:

{"score":37}

Множество двойки ключ/стойност

Ето пример с множество двойки ключ/стойност:

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

Резултат:

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

Вложен JSON

Ако една от стойностите, които предавате, съдържа JSON, можете да използвате FORMAT JSON аргумент, за да посочите, че съдържа JSON и не трябва да се цитира в изхода.

Пример:

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

Резултат:

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

Ето какво се случва, ако премахнем FORMAT JSON част:

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

Резултат:

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

Пример за база данни

Да предположим, че изпълняваме следната заявка:

SELECT *
FROM regions;

Резултат:

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

Ето същата заявка, но с избраните колони, предадени на JSON_OBJECT() функция:

SELECT JSON_OBJECT(*) 
FROM regions;

Резултат:

{"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"}

И ето го само с една колона, предадена на функцията:

SELECT JSON_OBJECT(region_name) 
FROM regions;

Резултат:

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

Вижте документацията на Oracle за по-подробно обяснение на тази функция.


  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 с параметри за IN клауза

  2. Метод за събиране:EXISTS Функция в базата данни на Oracle

  3. Как мога да ускоря row_number в Oracle?

  4. Как да свържете Airflow към базата данни на Oracle

  5. ORA-01882:регионът на часовата зона не е намерен