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

MariaDB JSON_EXISTS () Giải thích

Trong MariaDB, JSON_EXISTS() là một chức năng tích hợp cho phép bạn kiểm tra xem một giá trị có tồn tại ở một đường dẫn được chỉ định trong tài liệu JSON hay không.

Nó chấp nhận tài liệu JSON làm đối số và trả về 1 nếu đường dẫn được tìm thấy và 0 nếu không.

Tài liệu MariaDB tuyên bố rằng hàm “xác định xem giá trị JSON được chỉ định có tồn tại trong dữ liệu đã cho hay không”. Tuy nhiên, hàm không thực sự xuất hiện để kiểm tra một giá trị nhất định. Có lẽ chính xác hơn khi nói rằng nó xác định xem một đường dẫn được chỉ định tồn tại hoặc một giá trị tồn tại ở đường dẫn được chỉ định.

Để kiểm tra xem giá trị thực tế tồn tại, bạn có thể sử dụng JSON_CONTAINS() chức năng.

Cú pháp

Cú pháp như sau:

 JSON_EXISTS(json_doc, path) 

Ở đâu json_doc là tài liệu JSON và path là con đường cần tìm.

Ví dụ

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

 SELECT JSON_EXISTS('{ "name": "Wag" }', '$.name'); 

Kết quả:

 + -------------------------------------------- + | JSON_EXISTS ('{"name":"Wag"}', '$ .name') | + ---------------------------- ---------------- + | 1 | + -------------------------------------------- +  

Trong trường hợp này, đường dẫn được tìm thấy và kết quả là 1 .

Nếu không tìm thấy đường dẫn, kết quả là 0 , như thế này:

 SELECT JSON_EXISTS('{ "name": "Wag" }', '$.type'); 

Kết quả:

 + -------------------------------------------- + | JSON_EXISTS ('{"name":"Wag"}', '$ .type') | + ---------------------------- ---------------- + | 0 | + -------------------------------------------- +  

Mảng

Trong ví dụ này, tôi kiểm tra sự tồn tại của một phần tử tại một chỉ mục nhất định của một mảng:

 SELECT JSON_EXISTS(
    '{ 
        "name": "Wag", 
        "scores": [ 10, 8, 7 ] 
    }', 
    "$.scores[2]"
    ) AS Result; 

Kết quả:

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

Dưới đây là những gì sẽ xảy ra nếu chỉ mục không tồn tại trong mảng:

 SELECT JSON_EXISTS(
    '{ 
        "name": "Wag", 
        "scores": [ 10, 8, 7 ] 
    }', 
    '$.scores[3]'
    ) AS Result; 

Kết quả:

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

Tài liệu JSON lớn hơn

Dưới đây là một ví dụ sử dụng tài liệu JSON lớn hơn một chút. Ở đây, tôi kiểm tra một khóa tồn tại trong một số cấp độ lồng nhau:

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

Kết quả:

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

Đối số rỗng

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

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

Kết quả:

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

JSON không hợp lệ

Chuyển JSON không hợp lệ dẫn đến NULL :

 SELECT JSON_EXISTS('{1}', '$.a'); 

Kết quả:

 + --------------------------- + | JSON_EXISTS ('{1}', '$ .a') | + --------------------------- + | NULL | + --------------------------- + 

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

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

 SELECT JSON_EXISTS(); 

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_EXISTS' 

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

 SELECT JSON_EXISTS('{"a": 1}', '$.a', 3); 

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_EXISTS' 

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Mang đến sự đổi mới nhanh hơn cho cộng đồng của MariaDB

  2. Trả lại Ngôn ngữ được sử dụng cho các Hàm Ngày &Giờ trong MariaDB

  3. 8 cách để thêm giây vào giá trị ngày giờ trong MariaDB

  4. MariaDB DATABASE () Giải thích

  5. Phần 1:Phân loại hình ảnh với Máy chủ MariaDB và TensorFlow - Tổng quan