Di MariaDB, COMPRESS()
adalah fungsi bawaan yang mengompresi string dan mengembalikan hasilnya sebagai string biner.
COMPRESS()
fungsi membutuhkan MariaDB telah dikompilasi dengan perpustakaan kompresi seperti zlib. Jika MariaDB belum dikompilasi dengan pustaka kompresi seperti itu, COMPRESS()
mengembalikan null
.
Sintaks
Sintaksnya seperti ini:
COMPRESS(string_to_compress)
Dimana string_to_compress
adalah string yang ingin Anda kompres.
Contoh
Berikut ini contoh dasarnya:
SELECT
LENGTH(REPEAT('z', 50)) AS "Uncompressed",
LENGTH(COMPRESS(REPEAT('z', 50))) AS "Compressed";
Hasil:
+--------------+------------+ | Uncompressed | Compressed | +--------------+------------+ | 50 | 16 | +--------------+------------+
Di sini, saya menggunakan LENGTH()
fungsi untuk mendapatkan panjang dalam byte dari string terkompresi dan terkompresi masing-masing. Saya menggunakan REPEAT()
berfungsi untuk mengulang huruf yang sama sebanyak 50 kali sebelum mengompresnya.
Berikut contoh lain yang menggunakan simbol hak cipta (©
):
SELECT
LENGTH(REPEAT('©', 50)) AS "Uncompressed",
LENGTH(COMPRESS(REPEAT('©', 50))) AS "Compressed";
Hasil:
+--------------+------------+ | Uncompressed | Compressed | +--------------+------------+ | 100 | 17 | +--------------+------------+
Simbol hak cipta adalah karakter dua byte, dan panjangnya yang tidak dikompresi adalah dua kali ukuran karakter byte tunggal. Namun, mengompresi string karakter dua byte berulang ini akan menurunkannya ke ukuran yang sama dengan string terkompresi dari karakter bita tunggal berulang.
Ini dia yang menggunakan karakter tiga byte:
SELECT
LENGTH(REPEAT('อ', 50)) AS "Uncompressed",
LENGTH(COMPRESS(REPEAT('อ', 50))) AS "Compressed";
Hasil:
+--------------+------------+ | Uncompressed | Compressed | +--------------+------------+ | 150 | 18 | +--------------+------------+
Dalam hal ini, efeknya bahkan lebih besar. String karakter tiga byte yang diulang direduksi menjadi ukuran yang sama dengan string karakter satu dan dua byte yang diulang pada contoh sebelumnya.
Argumen Null
Melewati null
mengembalikan null
:
SELECT COMPRESS(null);
Hasil:
+----------------+ | COMPRESS(null) | +----------------+ | NULL | +----------------+
Argumen Tidak Ada
Memanggil COMPRESS()
dengan jumlah argumen yang salah, atau tanpa memberikan argumen apa pun menghasilkan kesalahan:
SELECT COMPRESS();
Hasil:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'COMPRESS'
Periksa Kompresi
Seperti disebutkan, COMPRESS()
fungsi membutuhkan MariaDB telah dikompilasi dengan perpustakaan kompresi seperti zlib. Jika MariaDB belum dikompilasi dengan pustaka kompresi seperti itu, COMPRESS()
mengembalikan null
.
Anda dapat memeriksa have_compress
variabel sistem untuk melihat apakah pustaka kompresi zlib dapat diakses ke server atau tidak:
SELECT @@have_compress;
Hasil:
+-----------------+ | @@have_compress | +-----------------+ | YES | +-----------------+
Dalam hal ini, library kompresi zlib dapat diakses oleh server, dan hasilnya adalah YES
.
Jika pustaka kompresi zlib tidak dapat diakses ke server, hasilnya adalah NO
.