sql >> Database >  >> RDS >> MariaDB

Hoe UNCOMPRESS() werkt in MariaDB

In MariaDB, UNCOMPRESS() is een ingebouwde functie die een tekenreeks decomprimeert die is gecomprimeerd door de COMPRESS() functie.

Syntaxis

De syntaxis gaat als volgt:

UNCOMPRESS(string_to_uncompress)

Waar string_to_uncompress is de tekenreeks die u wilt decomprimeren.

Voorbeeld

Hier is een eenvoudig voorbeeld:

SELECT UNCOMPRESS(COMPRESS('Marching on'));

Resultaat:

+-------------------------------------+
| UNCOMPRESS(COMPRESS('Marching on')) |
+-------------------------------------+
| Marching on                         |
+-------------------------------------+

De maat controleren

Hier is een eenvoudig voorbeeld:

SELECT
    LENGTH(REPEAT('z', 50)) AS "Uncompressed",
    LENGTH(COMPRESS(REPEAT('z', 50))) AS "Compressed",
    LENGTH(UNCOMPRESS(COMPRESS(REPEAT('z', 50)))) AS "Uncompressed";

Resultaat:

+--------------+------------+--------------+
| Uncompressed | Compressed | Uncompressed |
+--------------+------------+--------------+
|           50 |         16 |           50 |
+--------------+------------+--------------+

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 (© ), wat een teken van twee bytes is:

SELECT
    LENGTH(REPEAT('©', 50)) AS "Uncompressed",
    LENGTH(COMPRESS(REPEAT('©', 50))) AS "Compressed",
    LENGTH(UNCOMPRESS(COMPRESS(REPEAT('©', 50)))) AS "Uncompressed";

Resultaat:

+--------------+------------+--------------+
| Uncompressed | Compressed | Uncompressed |
+--------------+------------+--------------+
|          100 |         17 |          100 |
+--------------+------------+--------------+

Hier is er een die een teken van drie bytes gebruikt:

SELECT
    LENGTH(REPEAT('อ', 50)) AS "Uncompressed",
    LENGTH(COMPRESS(REPEAT('อ', 50))) AS "Compressed",
    LENGTH(UNCOMPRESS(COMPRESS(REPEAT('อ', 50)))) AS "Uncompressed";

Resultaat:

+--------------+------------+--------------+
| Uncompressed | Compressed | Uncompressed |
+--------------+------------+--------------+
|          150 |         18 |          150 |
+--------------+------------+--------------+

Nullargumenten

Doorgeven van null retourneert null :

SELECT UNCOMPRESS(null);

Resultaat:

+------------------+
| UNCOMPRESS(null) |
+------------------+
| NULL             |
+------------------+

Ontbrekend argument

Aanroepen van UNCOMPRESS() met het verkeerde aantal argumenten, of zonder het doorgeven van argumenten resulteert in een fout:

SELECT UNCOMPRESS();

Resultaat:

ERROR 1582 (42000): Incorrect parameter count in the call to native function 'UNCOMPRESS'

Controleer op compressie

De UNCOMPRESS() functie vereist dat MariaDB is gecompileerd met een compressiebibliotheek zoals zlib. Als MariaDB niet is gecompileerd met een dergelijke compressiebibliotheek, UNCOMPRESS() 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 .


  1. Controleer of een tabel een externe sleutel heeft in SQL Server met OBJECTPROPERTY()

  2. Groeperen op waarden die op volgorde staan

  3. Oracle partitie index

  4. Wat is subquery's in orakel