Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Hàm JSON_OBJECTAGG () trong Oracle

Trong Cơ sở dữ liệu Oracle, JSON_OBJECTAGG() hàm tạo một đối tượng JSON từ một cặp khóa-giá trị.

Thông thường, khóa thuộc tính, giá trị thuộc tính hoặc cả hai đều là các cột của biểu thức SQL.

Cú pháp

Cú pháp như sau:

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

Ở đâu:

  • [ KEY ] key_expr VALUE val_expr chỉ định một cặp khóa-giá trị thuộc tính.
  • FORMAT JSON cho biết rằng chuỗi đầu vào là JSON và do đó sẽ không được trích dẫn trong đầu ra.
  • JSON_on_null_clause chỉ định hành vi sẽ sử dụng khi expr tương đương với null (tức là bao gồm giá trị null trong đầu ra hoặc không).
  • JSON_returning_clause chỉ định loại giá trị trả về.
  • STRICT kiểm tra xem đầu ra của hàm tạo JSON có đúng là JSON hay không. Nếu kiểm tra không thành công, lỗi cú pháp sẽ xuất hiện.
  • WITH UNIQUE KEYS đảm bảo rằng các đối tượng JSON được tạo có khóa duy nhất.

Ví dụ

Dưới đây là một ví dụ để chứng minh cách nó hoạt động:

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

Kết quả:

{"score":37}

KEY phần là tùy chọn, vì vậy phần sau đạt được kết quả tương tự:

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

Kết quả:

{"score":37}

JSON lồng nhau

Nếu một trong các giá trị bạn chuyển có chứa JSON, bạn có thể sử dụng FORMAT JSON để chỉ định rằng nó chứa JSON và không được trích dẫn trong đầu ra.

Ví dụ:

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

Kết quả:

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

Đây là những gì sẽ xảy ra nếu chúng tôi xóa FORMAT JSON phần:

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

Kết quả:

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

Ví dụ về cơ sở dữ liệu

JSON_OBJECTAGG() hàm thường được sử dụng để tạo tài liệu JSON dựa trên các giá trị trong cột cơ sở dữ liệu.

Giả sử chúng ta chạy truy vấn sau:

SELECT *
FROM jobs
WHERE min_salary > 9000;

Kết quả:

    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

Dưới đây là ví dụ về cách chúng tôi có thể sử dụng JSON_OBJECTAGG() hàm tạo tài liệu JSON từ hai trong số các cột trên:

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

Kết quả:

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

Trong trường hợp này, job_id là khóa và min_salary cột là giá trị.

Xem tài liệu của Oracle để có giải thích chi tiết hơn về chức năng này.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Nhận các khoảng thời gian chồng chéo của phong bì. I.e

  2. Cập nhật Oracle bị treo

  3. Cách tạo người dùng trong Oracle và chỉ định đặc quyền

  4. Tại sao Group By của Mysql và Group by Oracle lại khác nhau

  5. Tạo Người dùng Oracle Mới và Cấp các Đặc quyền:Cú pháp và Ví dụ