MariaDB
 sql >> Base de Dados >  >> RDS >> MariaDB

Como UNCOMPRESS() funciona no MariaDB


No MariaDB, UNCOMPRESS() é uma função interna que descompacta uma string que foi compactada pelo COMPRESS() função.

Sintaxe


A sintaxe fica assim:
UNCOMPRESS(string_to_uncompress)

Onde string_to_uncompress é a string que você deseja descompactar.

Exemplo


Segue um exemplo básico:
SELECT UNCOMPRESS(COMPRESS('Marching on'));

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

Verificando o tamanho


Segue um exemplo básico:
SELECT
    LENGTH(REPEAT('z', 50)) AS "Uncompressed",
    LENGTH(COMPRESS(REPEAT('z', 50))) AS "Compressed",
    LENGTH(UNCOMPRESS(COMPRESS(REPEAT('z', 50)))) AS "Uncompressed";

Resultado:
+--------------+------------+--------------+
| Uncompressed | Compressed | Uncompressed |
+--------------+------------+--------------+
|           50 |         16 |           50 |
+--------------+------------+--------------+

Aqui, usei o LENGTH() para obter o comprimento em bytes das strings descompactadas e compactadas, respectivamente. Eu usei o REPEAT() função para repetir a mesma letra 50 vezes antes de comprimi-la.

Aqui está outro exemplo que usa o símbolo de direitos autorais (© ), que é um caractere de dois bytes:
SELECT
    LENGTH(REPEAT('©', 50)) AS "Uncompressed",
    LENGTH(COMPRESS(REPEAT('©', 50))) AS "Compressed",
    LENGTH(UNCOMPRESS(COMPRESS(REPEAT('©', 50)))) AS "Uncompressed";

Resultado:
+--------------+------------+--------------+
| Uncompressed | Compressed | Uncompressed |
+--------------+------------+--------------+
|          100 |         17 |          100 |
+--------------+------------+--------------+

Aqui está um que usa um caractere de três bytes:
SELECT
    LENGTH(REPEAT('อ', 50)) AS "Uncompressed",
    LENGTH(COMPRESS(REPEAT('อ', 50))) AS "Compressed",
    LENGTH(UNCOMPRESS(COMPRESS(REPEAT('อ', 50)))) AS "Uncompressed";

Resultado:
+--------------+------------+--------------+
| Uncompressed | Compressed | Uncompressed |
+--------------+------------+--------------+
|          150 |         18 |          150 |
+--------------+------------+--------------+

Argumentos nulos


Passando null retorna null :
SELECT UNCOMPRESS(null);

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

Argumento ausente


Chamando UNCOMPRESS() com o número errado de argumentos ou sem passar nenhum argumento resulta em um erro:
SELECT UNCOMPRESS();

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

Verificar compactação


O UNCOMPRESS() A função requer que o MariaDB tenha sido compilado com uma biblioteca de compactação como zlib. Se o MariaDB não foi compilado com tal biblioteca de compressão, UNCOMPRESS() retorna null .

Você pode verificar o have_compress variável de sistema para ver se a biblioteca de compactação zlib está acessível ao servidor:
SELECT @@have_compress;

Resultado:
+-----------------+
| @@have_compress |
+-----------------+
| YES             |
+-----------------+

Nesse caso, a biblioteca de compactação zlib é acessível ao servidor e o resultado é YES .

Se a biblioteca de compactação zlib não estiver acessível ao servidor, o resultado será NO .