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

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

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

Обикновено ключът на свойството, стойността на свойството или и двете са колони от SQL изрази.

Синтаксис

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

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

Къде:

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

Пример

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

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

Резултат:

{"score":37}

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

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

Резултат:

{"score":37}

Вложен JSON

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

Пример:

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

Резултат:

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

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

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

Резултат:

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

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

JSON_OBJECTAGG() функцията обикновено се използва за създаване на JSON документи въз основа на стойностите в колона на база данни.

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

SELECT *
FROM jobs
WHERE min_salary > 9000;

Резултат:

    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

Ето пример за това как можем да използваме JSON_OBJECTAGG() функция за създаване на JSON документ от две от горните колони:

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

Резултат:

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

В този случай job_id колоната е ключът, а min_salary колона е стойността.

Вижте документацията на 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. Методи за събиране:FIRST &LAST функции в Oracle Database

  2. Функция SIN() в Oracle

  3. Има ли Oracle, еквивалентен на ИЗХОДНИЯТ ИЗХОД на SQL Server INSERTED.*?

  4. Най-добрият модел на дизайн за затваряне на връзката с базата данни, когато възникне изключение

  5. Изписване с главни букви на имената на дните и месеца при форматиране на дати в Oracle