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

Hàm JSON_OBJECT () trong Oracle

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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách thêm máy chủ quản lý trong R12.2

  2. Cột tự động tăng dần - Trình tự làm giá trị mặc định trong Oracle

  3. Xử lý ExecuteScalar () khi không có kết quả nào được trả về

  4. Cài đặt RAC cho Cơ sở dữ liệu với Datafiles

  5. Tôi có nên xóa hoặc vô hiệu hóa một hàng trong cơ sở dữ liệu quan hệ không?