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

MariaDB JSON_QUERY () Giải thích

Trong MariaDB, JSON_QUERY() là một hàm tích hợp trả về một đối tượng hoặc mảng từ tài liệu JSON, dựa trên đường dẫn được cung cấp.

Nó tương tự với JSON_VALUE() , ngoại trừ việc nó trả về một đối tượng hoặc mảng thay vì một đại lượng vô hướng (JSON_VALUE() trả về một đại lượng vô hướng).

Cú pháp

Cú pháp như sau:

 JSON_QUERY(json_doc, path) 

Ở đâu json_doc là tài liệu JSON và path là một đường dẫn trong tài liệu.

Ví dụ

Đây là một ví dụ để chứng minh.

 SET @json_document = '
    { 
        "_id" : 1, 
        "name" : "Wag", 
        "details" : {
            "type" : "Dog", 
            "weight" : 20,
            "awards" : { 
                "Florida Dog Awards" : "Top Dog", 
                "New York Marathon" : "Fastest Dog", 
                "Sumo 2020" : "Biggest Dog"
            }
        }
    }
';
SELECT JSON_QUERY(@json_document, '$.details'); 

Kết quả:

 {"type":"Dog", "weight":20, "Prize":{"Florida Dog Awards":"Top Dog", "New York Marathon":"Fastest Dog", "Sumo 2020":"Con chó lớn nhất"}} 

Chúng ta có thể sử dụng ký hiệu dấu chấm để đi xuống đối tượng lồng nhau tiếp theo:

 SET @json_document = '
    { 
        "_id" : 1, 
        "name" : "Wag", 
        "details" : {
            "type" : "Dog", 
            "weight" : 20,
            "awards" : { 
                "Florida Dog Awards" : "Top Dog", 
                "New York Marathon" : "Fastest Dog", 
                "Sumo 2020" : "Biggest Dog"
            }
        }
    }
';
SELECT JSON_QUERY(@json_document, '$.details.awards'); 

Kết quả:

 {"Florida Dog Awards":"Top Dog", "New York Marathon":"Fastest Dog", "Sumo 2020":"Biggest Dog"} 

Mảng

Dưới đây là một ví dụ về việc trả về một mảng:

 SET @json_document = '
    { 
        "_id" : 1, 
        "awards" : [ "Top Dog", "Best Dog", "Biggest Dog" ] 
    }
';
SELECT JSON_QUERY(@json_document, '$.awards'); 

Kết quả:

 + ------------------------------------------ + | JSON_QUERY (@json_document, '$ .awards') | + ------------------------------------- ----- + | ["Top Dog", "Best Dog", "Biggest Dog"] | + -------------------------------- ---------- + 

Nếu bạn muốn trả về một phần tử mảng thực, hãy thử JSON_VALUE() chức năng.

Đường dẫn không tồn tại

Chuyển một đường dẫn không tồn tại trong tài liệu JSON dẫn đến NULL .

Ví dụ:

 SET @json_document = '
    { 
        "_id" : 1, 
        "awards" : [ "Top Dog", "Best Dog", "Biggest Dog" ] 
    }
';
SELECT JSON_QUERY(@json_document, '$.type'); 

Kết quả:

 + -------------------------------------- + | JSON_QUERY (@json_document, '$ .type') | + ------------------------------------- - + | NULL | + -------------------------------------- + 

Giá trị vô hướng

Cố gắng trả về một giá trị vô hướng sẽ trả về NULL .

Ví dụ:

 SELECT JSON_QUERY('{ "weight": 10 }', '$.weight'); 

Kết quả:

 + -------------------------------------------- + | JSON_QUERY ('{"weight":10}', '$ .weight') | + ------------------------------ -------------- + | NULL | + -------------------------------------------- +  

Để trả về một giá trị vô hướng, hãy sử dụng JSON_VALUE() chức năng.

Đối số rỗng

Nếu bất kỳ đối số nào là NULL , kết quả là NULL :

 SELECT 
    JSON_QUERY(null, '$.type'),
    JSON_QUERY('{"a":1}', null); 

Kết quả:

 + ---------------------------- + ----------------- ------------ + | JSON_QUERY (null, '$ .type') | JSON_QUERY ('{"a":1}', null) | + ---------------------------- + ----- ------------------------ + | NULL | NULL | + ---------------------------- + ------------------ ----------- + 

Đếm tham số không chính xác

Không cung cấp đối số dẫn đến lỗi:

 SELECT JSON_QUERY(); 

Kết quả:

 ERROR 1582 (42000):Số tham số không chính xác trong lệnh gọi hàm gốc 'JSON_QUERY' 

Điều này cũng xảy ra tương tự khi bạn cung cấp quá ít hoặc quá nhiều đối số:

 SELECT JSON_QUERY('{ "a": 1}'); 

Kết quả:

 ERROR 1582 (42000):Số tham số không chính xác trong lệnh gọi hàm gốc 'JSON_QUERY' 

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. HA cho MySQL và MariaDB - So sánh bản sao Master-Master với Galera Cluster

  2. Cách cài đặt MariaDB trên CentOS 7 / RHEL 7

  3. Cách tự động hóa cụm Galera bằng ClusterControl CLI

  4. Hiểu các chỉ mục trong MySQL:Phần thứ hai

  5. Triển khai bản sao MySQL Multicloud an toàn trên AWS và GCP với VPN