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
.