W MariaDB, UNCOMPRESS()
to wbudowana funkcja, która dekompresuje ciąg znaków skompresowany przez COMPRESS()
funkcja.
Składnia
Składnia wygląda tak:
UNCOMPRESS(string_to_uncompress)
Gdzie string_to_uncompress
to ciąg, który chcesz rozpakować.
Przykład
Oto podstawowy przykład:
SELECT UNCOMPRESS(COMPRESS('Marching on'));
Wynik:
+-------------------------------------+ | UNCOMPRESS(COMPRESS('Marching on')) | +-------------------------------------+ | Marching on | +-------------------------------------+
Sprawdzanie rozmiaru
Oto podstawowy przykład:
SELECT
LENGTH(REPEAT('z', 50)) AS "Uncompressed",
LENGTH(COMPRESS(REPEAT('z', 50))) AS "Compressed",
LENGTH(UNCOMPRESS(COMPRESS(REPEAT('z', 50)))) AS "Uncompressed";
Wynik:
+--------------+------------+--------------+ | Uncompressed | Compressed | Uncompressed | +--------------+------------+--------------+ | 50 | 16 | 50 | +--------------+------------+--------------+
Tutaj użyłem LENGTH()
funkcja, aby uzyskać długość w bajtach odpowiednio nieskompresowanych i skompresowanych ciągów. Użyłem REPEAT()
funkcja powtarzania tej samej litery 50 razy przed jej skompresowaniem.
Oto kolejny przykład, w którym zastosowano symbol praw autorskich (©
), który jest znakiem dwubajtowym:
SELECT
LENGTH(REPEAT('©', 50)) AS "Uncompressed",
LENGTH(COMPRESS(REPEAT('©', 50))) AS "Compressed",
LENGTH(UNCOMPRESS(COMPRESS(REPEAT('©', 50)))) AS "Uncompressed";
Wynik:
+--------------+------------+--------------+ | Uncompressed | Compressed | Uncompressed | +--------------+------------+--------------+ | 100 | 17 | 100 | +--------------+------------+--------------+
Oto taki, który używa znaku trzybajtowego:
SELECT
LENGTH(REPEAT('อ', 50)) AS "Uncompressed",
LENGTH(COMPRESS(REPEAT('อ', 50))) AS "Compressed",
LENGTH(UNCOMPRESS(COMPRESS(REPEAT('อ', 50)))) AS "Uncompressed";
Wynik:
+--------------+------------+--------------+ | Uncompressed | Compressed | Uncompressed | +--------------+------------+--------------+ | 150 | 18 | 150 | +--------------+------------+--------------+
Argumenty zerowe
Przekazywanie null
zwraca null
:
SELECT UNCOMPRESS(null);
Wynik:
+------------------+ | UNCOMPRESS(null) | +------------------+ | NULL | +------------------+
Brakujący argument
Wywołanie UNCOMPRESS()
z niewłaściwą liczbą argumentów lub bez przekazania jakichkolwiek argumentów powoduje błąd:
SELECT UNCOMPRESS();
Wynik:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'UNCOMPRESS'
Sprawdź kompresję
UNCOMPRESS()
funkcja wymaga, aby MariaDB została skompilowana z biblioteką kompresji, taką jak zlib. Jeśli MariaDB nie została skompilowana z taką biblioteką kompresji, UNCOMPRESS()
zwraca null
.
Możesz sprawdzić have_compress
zmienna systemowa, aby sprawdzić, czy biblioteka kompresji zlib jest dostępna dla serwera:
SELECT @@have_compress;
Wynik:
+-----------------+ | @@have_compress | +-----------------+ | YES | +-----------------+
W tym przypadku biblioteka kompresji zlib jest dostępna dla serwera, a wynikiem jest YES
.
Jeśli biblioteka kompresji zlib nie jest dostępna dla serwera, wynikiem będzie NO
.