Trong Cơ sở dữ liệu Oracle, JSON_OBJECT() hàm tạo một đối tượng JSON từ một chuỗi các cặp khóa-giá trị hoặc một phiên bản kiểu đối tượng.
Cú pháp
Cú pháp như sau:
JSON_OBJECT
( [ [ KEY ] key_expr VALUE val_expr [ FORMAT JSON ]
,]...
[ JSON_on_null_clause ] [ JSON_returning_clause ]
[ STRICT ]
[ WITH UNIQUE KEYS ] ) Ở đâu:
-
[ KEY ] key_expr VALUE val_exprchỉ định một cặp khóa-giá trị thuộc tính. -
FORMAT JSONcho 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_clausechỉ định hành vi sẽ sử dụng khiexprtương đương với null (tức là bao gồm giá trị null trong đầu ra hoặc không). -
JSON_returning_clausechỉ định loại giá trị trả về. -
STRICTkiể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_OBJECT(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_OBJECT('score' VALUE 37) FROM DUAL; Kết quả:
{"score":37} Nhiều cặp khóa / giá trị
Dưới đây là một ví dụ với nhiều cặp khóa / giá trị:
SELECT JSON_OBJECT(
KEY 'fname' VALUE 'Homer',
KEY 'lname' VALUE 'Escobar',
KEY 'score' VALUE 237
)
FROM DUAL; Kết quả:
{"fname":"Homer","lname":"Escobar","score":237} 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_OBJECT(
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_OBJECT(
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
Giả sử chúng ta chạy truy vấn sau:
SELECT *
FROM regions; Kết quả:
REGION_ID REGION_NAME
____________ _________________________
1 Europe
2 Americas
3 Asia
4 Middle East and Africa
Đây là cùng một truy vấn, nhưng với các cột đã chọn được chuyển đến JSON_OBJECT() chức năng:
SELECT JSON_OBJECT(*)
FROM regions; Kết quả:
{"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"} Và đây là chỉ với một cột được truyền vào hàm:
SELECT JSON_OBJECT(region_name)
FROM regions; Kết quả:
{"region_name":"Europe"}
{"region_name":"Americas"}
{"region_name":"Asia"}
{"region_name":"Middle East and Africa"} 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.