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

MariaDB JSON_ARRAY_APPEND () Giải thích

Trong MariaDB, JSON_ARRAY_APPEND() là một hàm tích hợp sẵn để nối các giá trị vào cuối của mảng / s được chỉ định trong tài liệu JSON và trả về kết quả.

Cú pháp

Cú pháp như sau:

JSON_ARRAY_APPEND(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 nối giá trị / s và value là giá trị để nối thêm.

Ví dụ

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

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

SELECT JSON_ARRAY_APPEND(@json_doc, '$', 4);

Kết quả:

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

Trong trường hợp này, giá trị 4 đã được thêm vào cuối mảng.

Nối nhiều giá trị

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

Ví dụ:

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

SELECT JSON_ARRAY_APPEND(@json_doc, '$', 4, '$', 5);

Kết quả:

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

Nhiều mảng

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

Ví dụ:

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

SELECT JSON_ARRAY_APPEND(@json_doc, '$.a', 4, '$.b', 5);

Kết quả:

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

Mảng lồng nhau

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

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

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

Kết quả:

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

Và trong ví dụ sau, tài liệu JSON gốc không chứa một mảng lồng nhau mà là JSON_ARRAY_APPEND() tạo một mảng lồng nhau dựa trên đường dẫn của chúng tôi:

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

SELECT JSON_ARRAY_APPEND(@json_doc, '$[3]', 4);

Kết quả:

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

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", "Chicken"]  
    }
 }';
SELECT JSON_DETAILED(
        JSON_ARRAY_APPEND(
            @json_doc, 
            '$.pet.diet', 
            'Water')
);

Kết quả:

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

Và đây là cách tạo một mảng lồng nhau:

SET @json_doc = '{  
    "pet": {    
       "name": "Scratch", 
       "diet": ["Beef", "Water"]
    }
 }';
SELECT JSON_DETAILED(
        JSON_ARRAY_APPEND(
            @json_doc, 
            '$.pet.diet[1]', 
            'Beer')
);

Kết quả:

{
    "pet": 
    {
        "name": "Scratch",
        "diet": 
        [
            "Beef",
            
            [
                "Water",
                "Beer"
            ]
        ]
    }
}

Đối số rỗng

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

SELECT JSON_ARRAY_APPEND(null, '$', 4);

Kết quả:

+---------------------------------+
| JSON_ARRAY_APPEND(null, '$', 4) |
+---------------------------------+
| NULL                            |
+---------------------------------+

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

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

SELECT JSON_ARRAY_APPEND(@json_doc, null, 4);

Kết quả:

+---------------------------------------+
| JSON_ARRAY_APPEND(@json_doc, null, 4) |
+---------------------------------------+
| NULL                                  |
+---------------------------------------+

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

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

SELECT JSON_ARRAY_APPEND(@json_doc, '$', null);

Kết quả:

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

Bạn cũng có thể sử dụng JSON_ARRAY_INSERT() để chèn 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. MariaDB JSON_MERGE_PRESERVE () Giải thích

  2. Cách triển khai MariaDB Cluster 10.5 để có tính khả dụng cao

  3. Cách SEC_TO_TIME () hoạt động trong MariaDB

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

  5. So sánh các sản phẩm cung cấp trên đám mây cụm Galera:Phần thứ nhất Amazon AWS