MariaDB
 sql >> Teknologi Basis Data >  >> RDS >> MariaDB

Bagaimana COMPRESS() Bekerja di MariaDB

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 .


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. HOUR() vs EXTRACT(HOUR ...) di MariaDB:Apa Bedanya?

  2. 3 Cara Mendapatkan Koleksi yang Tersedia di MariaDB

  3. Bagaimana UTC_TIMESTAMP() Bekerja di MariaDB

  4. Bagaimana MOD() Bekerja di MariaDB

  5. Kisah Transformasional di MariaDB OpenWorks Conference