sql >> Base de Datos >  >> RDS >> MariaDB

Cómo funciona UNCOMPRESS() en MariaDB

En MariaDB, UNCOMPRESS() es una función incorporada que descomprime una cadena que ha sido comprimida por COMPRESS() función.

Sintaxis

La sintaxis es así:

UNCOMPRESS(string_to_uncompress)

Donde string_to_uncompress es la cadena que desea descomprimir.

Ejemplo

He aquí un ejemplo básico:

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

Resultado:

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

Comprobación del tamaño

He aquí un ejemplo 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 |
+--------------+------------+--------------+

Aquí, usé LENGTH() función para obtener la longitud en bytes de las cadenas sin comprimir y comprimidas respectivamente. Usé REPEAT() Función para repetir la misma letra 50 veces antes de comprimirla.

Aquí hay otro ejemplo que usa el símbolo de copyright (© ), que es un carácter de dos 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 |
+--------------+------------+--------------+

Aquí hay uno que usa un carácter de tres 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

Pasando null devuelve null :

SELECT UNCOMPRESS(null);

Resultado:

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

Argumento faltante

Llamando a UNCOMPRESS() con el número incorrecto de argumentos, o sin pasar ningún argumento da como resultado un error:

SELECT UNCOMPRESS();

Resultado:

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

Comprobar la compresión

El UNCOMPRESS() La función requiere que MariaDB se haya compilado con una biblioteca de compresión como zlib. Si MariaDB no se ha compilado con una biblioteca de compresión de este tipo, UNCOMPRESS() devuelve null .

Puede verificar el have_compress variable del sistema para ver si el servidor puede acceder o no a la biblioteca de compresión zlib:

SELECT @@have_compress;

Resultado:

+-----------------+
| @@have_compress |
+-----------------+
| YES             |
+-----------------+

En este caso, el servidor puede acceder a la biblioteca de compresión zlib y el resultado es YES .

Si el servidor no puede acceder a la biblioteca de compresión zlib, el resultado sería NO .