In MariaDB, COMPRESS()
is een ingebouwde functie die een string comprimeert en het resultaat als een binaire string teruggeeft.
De COMPRESS()
functie vereist dat MariaDB is gecompileerd met een compressiebibliotheek zoals zlib. Als MariaDB niet is gecompileerd met een dergelijke compressiebibliotheek, COMPRESS()
retourneert null
.
Syntaxis
De syntaxis gaat als volgt:
COMPRESS(string_to_compress)
Waar string_to_compress
is de tekenreeks die u wilt comprimeren.
Voorbeeld
Hier is een eenvoudig voorbeeld:
SELECT
LENGTH(REPEAT('z', 50)) AS "Uncompressed",
LENGTH(COMPRESS(REPEAT('z', 50))) AS "Compressed";
Resultaat:
+--------------+------------+ | Uncompressed | Compressed | +--------------+------------+ | 50 | 16 | +--------------+------------+
Hier gebruikte ik de LENGTH()
functie om de lengte in bytes van respectievelijk de ongecomprimeerde en gecomprimeerde strings te krijgen. Ik gebruikte de REPEAT()
functie om dezelfde letter 50 keer te herhalen voordat deze wordt gecomprimeerd.
Hier is nog een voorbeeld dat het copyright-symbool gebruikt (©
):
SELECT
LENGTH(REPEAT('©', 50)) AS "Uncompressed",
LENGTH(COMPRESS(REPEAT('©', 50))) AS "Compressed";
Resultaat:
+--------------+------------+ | Uncompressed | Compressed | +--------------+------------+ | 100 | 17 | +--------------+------------+
Het copyright-symbool is een teken van twee bytes en de ongecomprimeerde lengte is twee keer zo groot als een teken van één byte. Door deze reeks herhaalde tekens van twee bytes te comprimeren, wordt deze echter teruggebracht tot een vergelijkbare grootte als de gecomprimeerde reeks van herhaalde tekens van één bytes.
Hier is er een die een teken van drie bytes gebruikt:
SELECT
LENGTH(REPEAT('อ', 50)) AS "Uncompressed",
LENGTH(COMPRESS(REPEAT('อ', 50))) AS "Compressed";
Resultaat:
+--------------+------------+ | Uncompressed | Compressed | +--------------+------------+ | 150 | 18 | +--------------+------------+
In dit geval is het effect nog groter. De herhaalde tekenreeks van drie bytes wordt verkleind tot een vergelijkbare grootte als de herhaalde tekenreeksen van één en twee bytes in de vorige voorbeelden.
Nullargumenten
Doorgeven van null
retourneert null
:
SELECT COMPRESS(null);
Resultaat:
+----------------+ | COMPRESS(null) | +----------------+ | NULL | +----------------+
Ontbrekend argument
COMPRESS()
. aanroepen met het verkeerde aantal argumenten, of zonder het doorgeven van argumenten resulteert in een fout:
SELECT COMPRESS();
Resultaat:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'COMPRESS'
Controleer op compressie
Zoals gezegd, de COMPRESS()
functie vereist dat MariaDB is gecompileerd met een compressiebibliotheek zoals zlib. Als MariaDB niet is gecompileerd met een dergelijke compressiebibliotheek, COMPRESS()
retourneert null
.
U kunt de have_compress
. controleren systeemvariabele om te zien of de zlib-compressiebibliotheek toegankelijk is voor de server:
SELECT @@have_compress;
Resultaat:
+-----------------+ | @@have_compress | +-----------------+ | YES | +-----------------+
In dit geval is de zlib-compressiebibliotheek toegankelijk voor de server en het resultaat is YES
.
Als de zlib-compressiebibliotheek niet toegankelijk is voor de server, is het resultaat NO
.