Trong MariaDB, JSON_COMPACT()
là một chức năng được tích hợp sẵn để loại bỏ tất cả các khoảng trắng không cần thiết khỏi tài liệu JSON, sao cho tài liệu đó ngắn và gọn nhất có thể và trả về kết quả.
Điều này có thể hữu ích khi bạn cần lưu trữ dữ liệu JSON trong cột cơ sở dữ liệu và bạn không muốn tài liệu JSON sử dụng nhiều dung lượng hơn mức cần thiết.
Đối với tác dụng ngược lại (tức là để kiểm tra tài liệu JSON bằng cách thêm thụt lề và dàn trải nó trên nhiều dòng), hãy sử dụng JSON_DETAILED()
chức năng.
Cú pháp
Cú pháp như sau:
JSON_COMPACT(json_doc)
Ở đâu json_doc
là tài liệu JSON.
Ví dụ
Đây là một ví dụ để chứng minh.
SET @json_document = '{"a": [0, 1], "b": [2, 3]}';
SELECT
JSON_COMPACT(@json_document) AS Compact,
@json_document AS Original;
Kết quả:
+-----------------------+----------------------------+ | Compact | Original | +-----------------------+----------------------------+ | {"a":[0,1],"b":[2,3]} | {"a": [0, 1], "b": [2, 3]} | +-----------------------+----------------------------+
Trong trường hợp này, cột đầu tiên chứa phiên bản nén và cột thứ hai chứa tài liệu JSON gốc trước khi nó được nén.
Tài liệu JSON lớn hơn
Dưới đây là một ví dụ với tài liệu JSON lớn hơn một chút, đã được kiểm chứng.
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_COMPACT(@json_document);
Kết quả:
{"_id":1,"name":"Wag","details":{"type":"Dog","weight":20,"awards":{"Florida Dog Awards":"Top Dog","New York Marathon":"Fastest Dog","Sumo 2020":"Biggest Dog"}}}
Đối số rỗng
Nếu đối số là NULL
, kết quả là NULL
:
SELECT JSON_COMPACT(null);
Kết quả:
+--------------------+ | JSON_COMPACT(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_COMPACT();
Kết quả:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'JSON_COMPACT'
Chúng tôi nhận được cùng một kết quả nếu chúng tôi cung cấp quá nhiều đối số:
SELECT JSON_COMPACT('{ "a": 1}', '{ "b": 1 }');
Kết quả:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'JSON_COMPACT'