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

MariaDB JSON_VALUE () Giải thích

Trong MariaDB, JSON_VALUE() là một hàm tích hợp trả về một giá trị vô hướng từ tài liệu JSON. Cụ thể hơn, nó trả về đại lượng vô hướng được chỉ định bởi đường dẫn được cung cấp.

Cú pháp

Cú pháp như sau:

 JSON_VALUE(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 = '
    { 
        "name": "Wag", 
        "type": "Dog", 
        "weight": 20 
    }
';
SELECT JSON_VALUE(@json_document, '$.name'); 

Kết quả:

 + -------------------------------------- + | JSON_VALUE (@json_document, '$ .name') | + ------------------------------------- - + | Wag | + -------------------------------------- + 

Đườ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 = '
    { 
        "name": "Wag", 
        "type": "Dog", 
        "weight": 20 
    }
';
SELECT JSON_VALUE(@json_document, '$.color'); 

Kết quả:

 + --------------------------------------- + | JSON_VALUE (@json_document, '$ .color') | + ------------------------------------- - + | NULL | + --------------------------------------- + 

Mảng

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

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

Kết quả:

 + ------------------------------------------- + | JSON_VALUE (@json_document, '$ .awards [1]') | + ---------------------------------- --------- + | Chú chó tốt nhất | + ------------------------------------------- +  

Mảng dựa trên 0 và vì vậy $.awards[1] trích yếu tố thứ hai của awards mảng.

Đối tượng lồng nhau

Dưới đây là một ví dụ về việc lấy giá trị từ một đối tượng được lồng bên trong một đối tượng khác:

 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_VALUE(
    @json_document, 
    '$.details.awards.Florida Dog Awards'
    ) AS Result; 

Kết quả:

 + --------- + | Kết quả | + --------- + | Top Dog | + --------- + 

Giá trị phi phương pháp

Cố gắng trả về một giá trị nonscalar (ví dụ:một đối tượng hoặc một mảng) trả về NULL .

Ví dụ:

 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_VALUE(
    @json_document, 
    '$.details.awards'
    ) AS Result; 

Kết quả:

 + -------- + | Kết quả | + -------- + | NULL | + -------- + 

Để trả về một giá trị phi mã, hãy sử dụng JSON_QUERY() hoặc hàm JSON_EXTRACT() 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_VALUE(null, '$.type'),
    JSON_VALUE('{"a":1}', null); 

Kết quả:

 + ---------------------------- + ----------------- ------------ + | JSON_VALUE (null, '$ .type') | JSON_VALUE ('{"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_VALUE(); 

Kết quả:

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

Đ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_VALUE('{ "a": 1}'); 

Kết quả:

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

  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 TAN () hoạt động trong MariaDB

  2. Mẹo để giám sát sao chép MariaDB với ClusterControl

  3. Cách thiết lập sao chép MariaDB 10.3 bằng Ansible và Vagrant

  4. Sử dụng mycli và Học MariaDB / MySQL một cách thoải mái trong một thiết bị đầu cuối!

  5. Cách DATE_SUB () hoạt động trong MariaDB