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 khiexpr
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.