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

MariaDB JSON_ARRAY_INSERT () Giải thích

Trong MariaDB, JSON_ARRAY_INSERT() là một hàm tích hợp để chèn một giá trị vào tài liệu JSON và trả về kết quả.

Cú pháp

Cú pháp như sau:

 JSON_ARRAY_INSERT(json_doc, path, value[, path, value] ...) 

Ở đâu json_doc là tài liệu JSON, path là đường dẫn đến nơi bạn muốn chèn giá trị / s và value là giá trị để chèn.

Ví dụ

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

 SELECT JSON_ARRAY_INSERT('[0, 1, 2]', '$[1]', 3); 

Kết quả:

 + ------------------------------------------- + | JSON_ARRAY_INSERT ('[0, 1, 2]', '$ [1]', 3) | + --------------------------- ---------------- + | [0, 3, 1, 2] | + --------------------------------------- ---- + 

Trong trường hợp này, giá trị 3 đã được chèn vào mảng ở vị trí 1 . Mảng dựa trên 0, vì vậy nó trở thành phần tử thứ hai trong mảng.

Chèn nhiều giá trị

Bạn có thể chèn nhiều giá trị trong một lệnh gọi tới JSON_ARRAY_INSERT() .

Ví dụ:

 SELECT JSON_ARRAY_INSERT('[0, 1, 2]', '$[0]', 4, '$[2]', 5); 

Kết quả:

 + ---------------------------------------------- -------- + | JSON_ARRAY_INSERT ('[0, 1, 2]', '$ [0]', 4, '$ [2]', 5) | + ------------------ ------------------------------------ + | [4, 0, 5, 1, 2] | + ------------------------------------- ----------------- + 

Đánh giá được thực hiện từ trái sang phải.

Đây là những gì sẽ xảy ra nếu chúng tôi chuyển đổi path / value đối số xung quanh:

 SELECT JSON_ARRAY_INSERT('[0, 1, 2]', '$[2]', 5, '$[0]', 4); 

Kết quả:

 + ---------------------------------------------- -------- + | JSON_ARRAY_INSERT ('[0, 1, 2]', '$ [2]', 5, '$ [0]', 4) | + ------------------ ------------------------------------ + | [4, 0, 1, 5, 2] | + ------------------------------------- ----------------- + 

Nhiều mảng

Bạn có thể chèn các giá trị vào nhiều mảng trong cùng một lệnh gọi tới JSON_ARRAY_INSERT() .

Ví dụ:

 SET @json_doc = '{"a": [0, 1], "b": [2, 3]}';

SELECT JSON_ARRAY_INSERT(@json_doc, '$.a[1]', 4, '$.b[2]', 5); 

Kết quả:

 + ---------------------------------------------- ---------- + | JSON_ARRAY_INSERT (@json_doc, '$ .a [1]', 4, '$ .b [2]', 5) | + --------------------- ----------------------------------- + | {"a":[0, 4, 1], "b":[2, 3, 5]} | + ----------------------- --------------------------------- + 

Mảng lồng nhau

Dưới đây là một ví dụ về việc chèn một giá trị vào một mảng lồng nhau:

 SET @json_doc = '[0, 1, [2, 3]]';

SELECT JSON_ARRAY_INSERT(@json_doc, '$[2][1]', 4); 

Kết quả:

 + -------------------------------------------- + | JSON_ARRAY_INSERT (@json_doc, '$ [2] [1]', 4) | + ------------------------------- ------------- + | [0, 1, [2, 4, 3]] | + ----------------------------------- --------- + 

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

Đây là một ví dụ với tài liệu JSON lớn hơn một chút.

Tôi cũng sử dụng JSON_DETAILED() để kiểm tra kết quả:

 SET @json_doc = '{  
    "pet": {    
       "name": "Fluffy", 
       "diet": ["Fish", "Water"]  
    }
 }';
SELECT JSON_DETAILED(
        JSON_ARRAY_INSERT(
            @json_doc, 
            '$.pet.diet[1]', 
            'Chicken')
); 

Kết quả:

 {"pet":{"name":"Fluffy", "diet":["Fish", "Chicken", "Water"]}} 

Đối số rỗng

Nếu đối số đầu tiên là NULL , kết quả là NULL :

 SELECT JSON_ARRAY_INSERT(null, '$[1]', 4); 

Kết quả:

 + ------------------------------------ + | JSON_ARRAY_INSERT (null, '$ [1]', 4) | + ----------------------------------- - + | NULL | + ------------------------------------ + 

Điều tương tự cũng áp dụng cho path đối số:

 SELECT JSON_ARRAY_INSERT('[0, 1, 2, 3]', null, 4); 

Kết quả:

 + -------------------------------------------- + | JSON_ARRAY_INSERT ('[0, 1, 2, 3]', null, 4) | + ------------------------------ -------------- + | NULL | + -------------------------------------------- +  

Tuy nhiên, nếu giá trị value đối số là NULL , rồi đến NULL được chèn vào mảng:

 SELECT JSON_ARRAY_INSERT('[0, 1, 2]', '$[1]', null); 

Kết quả:

 + ---------------------------------------------- + | JSON_ARRAY_INSERT ('[0, 1, 2]', '$ [1]', null) | + --------------------------- ------------------- + | [0, null, 1, 2] | + --------------------------------------- ------- + 

Bạn cũng có thể sử dụng JSON_ARRAY_APPEND() để nối các giá trị vào một mảng.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Di chuyển cơ sở dữ liệu MariaDB sang trạng thái được mã hóa và không được mã hóa

  2. Cách thực hiện hoạt động dự phòng cho thiết lập bản sao MySQL

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

  4. Cách chuyển sang chữ hoa trong MariaDB

  5. Kết hợp sức mạnh của SQL và các câu lệnh thủ tục với Chế độ tương thích Oracle của MariaDB