Trong MariaDB, UNCOMPRESS()
là một hàm tích hợp giúp giải nén một chuỗi được nén bởi COMPRESS()
chức năng.
Cú pháp
Cú pháp như sau:
UNCOMPRESS(string_to_uncompress)
Nơi string_to_uncompress
là chuỗi bạn muốn giải nén.
Ví dụ
Đây là một ví dụ cơ bản:
SELECT UNCOMPRESS(COMPRESS('Marching on'));
Kết quả:
+-------------------------------------+ | UNCOMPRESS(COMPRESS('Marching on')) | +-------------------------------------+ | Marching on | +-------------------------------------+
Kiểm tra kích thước
Đây là một ví dụ cơ bản:
SELECT
LENGTH(REPEAT('z', 50)) AS "Uncompressed",
LENGTH(COMPRESS(REPEAT('z', 50))) AS "Compressed",
LENGTH(UNCOMPRESS(COMPRESS(REPEAT('z', 50)))) AS "Uncompressed";
Kết quả:
+--------------+------------+--------------+ | Uncompressed | Compressed | Uncompressed | +--------------+------------+--------------+ | 50 | 16 | 50 | +--------------+------------+--------------+
Ở đây, tôi đã sử dụng LENGTH()
hàm để lấy độ dài tính bằng byte của các chuỗi không nén và nén tương ứng. Tôi đã sử dụng REPEAT()
chức năng lặp lại cùng một chữ cái 50 lần trước khi nén nó.
Đây là một ví dụ khác sử dụng biểu tượng bản quyền (©
), là một ký tự hai byte:
SELECT
LENGTH(REPEAT('©', 50)) AS "Uncompressed",
LENGTH(COMPRESS(REPEAT('©', 50))) AS "Compressed",
LENGTH(UNCOMPRESS(COMPRESS(REPEAT('©', 50)))) AS "Uncompressed";
Kết quả:
+--------------+------------+--------------+ | Uncompressed | Compressed | Uncompressed | +--------------+------------+--------------+ | 100 | 17 | 100 | +--------------+------------+--------------+
Đây là một trong những sử dụng ký tự 3 byte:
SELECT
LENGTH(REPEAT('อ', 50)) AS "Uncompressed",
LENGTH(COMPRESS(REPEAT('อ', 50))) AS "Compressed",
LENGTH(UNCOMPRESS(COMPRESS(REPEAT('อ', 50)))) AS "Uncompressed";
Kết quả:
+--------------+------------+--------------+ | Uncompressed | Compressed | Uncompressed | +--------------+------------+--------------+ | 150 | 18 | 150 | +--------------+------------+--------------+
Đối số rỗng
Chuyển null
trả về null
:
SELECT UNCOMPRESS(null);
Kết quả:
+------------------+ | UNCOMPRESS(null) | +------------------+ | NULL | +------------------+
Thiếu đối số
Đang gọi UNCOMPRESS()
với số lượng đối số sai hoặc không chuyển bất kỳ đối số nào dẫn đến lỗi:
SELECT UNCOMPRESS();
Kết quả:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'UNCOMPRESS'
Kiểm tra nén
UNCOMPRESS()
hàm yêu cầu MariaDB phải được biên dịch với một thư viện nén như zlib. Nếu MariaDB chưa được biên dịch với thư viện nén như vậy, UNCOMPRESS()
trả về null
.
Bạn có thể kiểm tra have_compress
biến hệ thống để xem liệu máy chủ có truy cập được thư viện nén zlib hay không:
SELECT @@have_compress;
Kết quả:
+-----------------+ | @@have_compress | +-----------------+ | YES | +-----------------+
Trong trường hợp này, máy chủ có thể truy cập thư viện nén zlib và kết quả là YES
.
Nếu máy chủ không thể truy cập thư viện nén zlib, kết quả sẽ là NO
.