I MariaDB, UNCOMPRESS()
er en indbygget funktion, der udkomprimerer en streng, der er blevet komprimeret af COMPRESS()
funktion.
Syntaks
Syntaksen ser sådan ud:
UNCOMPRESS(string_to_uncompress)
Hvor string_to_uncompress
er den streng, du vil komprimere.
Eksempel
Her er et grundlæggende eksempel:
SELECT UNCOMPRESS(COMPRESS('Marching on'));
Resultat:
+--------------------------------------------+| UNCOMPRESS(COMPRESS('Marcherer videre')) |+--------------------------------------------+ | Marcherer videre |+---------------------------------------------+
Kontrol af størrelsen
Her er et grundlæggende eksempel:
SELECT
LENGTH(REPEAT('z', 50)) AS "Uncompressed",
LENGTH(COMPRESS(REPEAT('z', 50))) AS "Compressed",
LENGTH(UNCOMPRESS(COMPRESS(REPEAT('z', 50)))) AS "Uncompressed";
Resultat:
+--------------+------------+--------------+| Ukomprimeret | Komprimeret | Ukomprimeret |+--------------+------------+-------------+| 50 | 16 | 50 |+--------------+-------------+-------------+
Her brugte jeg LENGTH()
funktion til at få længden i bytes af henholdsvis de ukomprimerede og komprimerede strenge. Jeg brugte REPEAT()
funktion for at gentage det samme bogstav 50 gange, før det komprimeres.
Her er et andet eksempel, der bruger copyright-symbolet (©
), som er et to-byte tegn:
SELECT
LENGTH(REPEAT('©', 50)) AS "Uncompressed",
LENGTH(COMPRESS(REPEAT('©', 50))) AS "Compressed",
LENGTH(UNCOMPRESS(COMPRESS(REPEAT('©', 50)))) AS "Uncompressed";
Resultat:
+--------------+------------+--------------+| Ukomprimeret | Komprimeret | Ukomprimeret |+--------------+------------+-------------+| 100 | 17 | 100 |+--------------+------------+-------------+
Her er en, der bruger et tre-byte tegn:
SELECT
LENGTH(REPEAT('อ', 50)) AS "Uncompressed",
LENGTH(COMPRESS(REPEAT('อ', 50))) AS "Compressed",
LENGTH(UNCOMPRESS(COMPRESS(REPEAT('อ', 50)))) AS "Uncompressed";
Resultat:
+--------------+------------+--------------+| Ukomprimeret | Komprimeret | Ukomprimeret |+--------------+------------+-------------+| 150 | 18 | 150 |+--------------+------------+-------------+
Nul-argumenter
Sender null
returnerer null
:
SELECT UNCOMPRESS(null);
Resultat:
+------------------------+| UKOMPRESS(null) |+------------------------+| NULL |+------------------+
Manglende argument
Kalder UNCOMPRESS()
med det forkerte antal argumenter, eller uden at sende nogen argumenter, resulterer det i en fejl:
SELECT UNCOMPRESS();
Resultat:
FEJL 1582 (42000):Forkert parameterantal i kaldet til den oprindelige funktion 'UNCOMPRESS'
Tjek efter komprimering
UNCOMPRESS()
funktion kræver, at MariaDB er blevet kompileret med et komprimeringsbibliotek såsom zlib. Hvis MariaDB ikke er blevet kompileret med et sådant komprimeringsbibliotek, UNCOMPRESS()
returnerer null
.
Du kan tjekke have_compress
systemvariabel for at se, om zlib-komprimeringsbiblioteket er tilgængeligt for serveren:
SELECT @@have_compress;
Resultat:
+----------------+| @@have_compress |+-----------------+| JA |+-----------------+
I dette tilfælde er zlib-komprimeringsbiblioteket tilgængeligt for serveren, og resultatet er YES
.
Hvis zlib-komprimeringsbiblioteket ikke er tilgængeligt for serveren, ville resultatet være NO
.