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

MariaDB JSON_MERGE_PATCH () Giải thích

Trong MariaDB, JSON_MERGE_PATCH() là một hàm tích hợp giúp hợp nhất hai hoặc nhiều tài liệu JSON và trả về kết quả.

JSON_MERGE_PATCH() hàm là sự thay thế tuân thủ RFC 7396 cho JSON_MERGE() , đã không được dùng nữa.

Cú pháp

Cú pháp như sau:

JSON_MERGE_PATCH(json_doc, json_doc[, json_doc] ...)

Ở đâu json_doc là các tài liệu JSON để hợp nhất.

Ví dụ

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

SELECT JSON_MERGE_PATCH('{"name":"Wag"}', '{"type":"Dog"}');

Kết quả:

+------------------------------------------------------+
| JSON_MERGE_PATCH('{"name":"Wag"}', '{"type":"Dog"}') |
+------------------------------------------------------+
| {"name": "Wag", "type": "Dog"}                       |
+------------------------------------------------------+

Chúng tôi có thể thấy rằng hai tài liệu đã được hợp nhất thành một.

Dưới đây là một ví dụ hợp nhất ba tài liệu:

SELECT JSON_MERGE_PATCH(
    '{ "name" : "Wag" }', 
    '{ "type" : "Dog" }',
    '{ "score" : [ 9, 7, 8 ] }'
    ) AS Result;

Kết quả:

+----------------------------------------------------+
| Result                                             |
+----------------------------------------------------+
| {"name": "Wag", "type": "Dog", "score": [9, 7, 8]} |
+----------------------------------------------------+

Mảng

JSON_MERGE_PATCH() hàm không hợp nhất các mảng:

SELECT JSON_MERGE_PATCH(
    '[1,2,3]', 
    '[4,5,6]'
    ) AS Result;

Kết quả:

+-----------+
| Result    |
+-----------+
| [4, 5, 6] |
+-----------+

Điều này trái ngược với JSON_MERGE() (không được dùng nữa) hàm và từ đồng nghĩa của nó JSON_MERGE_PRESERVE() , cả hai đều hợp nhất các mảng.

Định dạng kết quả

Bạn có thể nhận thấy rằng JSON_MERGE_PATCH() thêm khoảng trắng vào tài liệu kết quả. Nếu đây là sự cố, bạn có thể sử dụng JSON_COMPACT() để xóa không gian.

Ví dụ:

SELECT 
    JSON_COMPACT(
        JSON_MERGE_PATCH(
            '{"name":"Wag"}', 
            '{"type":"Dog"}',
            '{"score":[9,7,8]}'
        )
    ) AS Result;

Kết quả:

+---------------------------------------------+
| Result                                      |
+---------------------------------------------+
| {"name":"Wag","type":"Dog","score":[9,7,8]} |
+---------------------------------------------+

Nhưng nếu bạn cần làm theo cách khác và nhận thêm định dạng, chẳng hạn như cấu trúc thụt lề, hãy thử JSON_DETAILED() chức năng.

SELECT 
    JSON_DETAILED(
        JSON_MERGE_PATCH(
            '{ "name" : "Wag" }', 
            '{ "type" : "Dog" }',
            '{ "score" : [ 9, 7, 8 ] }'
        )
    ) AS Result;

Kết quả:

+---------------------------------------+
| Result                                |
+---------------------------------------+
| {
    "name": "Wag",
    "type": "Dog",
    "score": 
    [
        9,
        7,
        8
    ]
} |
+---------------------------------------+

Đối số rỗng

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

SELECT 
    JSON_MERGE_PATCH('{"a":1}', null) AS a,
    JSON_MERGE_PATCH(null, '{"a":1}') AS b,
    JSON_MERGE_PATCH(null, null) AS c;

Kết quả:

+------+------+------+
| a    | b    | c    |
+------+------+------+
| NULL | NULL | NULL |
+------+------+------+

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

Việc gọi hàm mà không có bất kỳ đối số nào dẫn đến lỗi:

SELECT JSON_MERGE_PATCH();

Kết quả:

ERROR 1582 (42000): Incorrect parameter count in the call to native function 'JSON_MERGE_PATCH'

Điều này cũng tương tự khi bạn chỉ cung cấp một đối số:

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

Kết quả:

ERROR 1582 (42000): Incorrect parameter count in the call to native function 'JSON_MERGE_PATCH'

  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 đặt MariaDB để sử dụng Đầu ra theo chiều dọc

  2. Cách HOUR () hoạt động trong MariaDB

  3. Cảm ơn bạn, Amazon, đã truyền cảm hứng cho chúng tôi để cung cấp một DBaaS tốt hơn:SkySQL

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

  5. 4 Hàm trả về phần giây từ giá trị thời gian trong MariaDB