В MariaDB, UNCOMPRESS()
е вградена функция, която декомпресира низ, който е бил компресиран от COMPRESS()
функция.
Синтаксис
Синтаксисът е така:
UNCOMPRESS(string_to_uncompress)
Където string_to_uncompress
е низът, който искате да разкомпресирате.
Пример
Ето един основен пример:
SELECT UNCOMPRESS(COMPRESS('Marching on'));
Резултат:
+-------------------------------------+ | UNCOMPRESS(COMPRESS('Marching on')) | +-------------------------------------+ | Marching on | +-------------------------------------+
Проверка на размера
Ето един основен пример:
SELECT
LENGTH(REPEAT('z', 50)) AS "Uncompressed",
LENGTH(COMPRESS(REPEAT('z', 50))) AS "Compressed",
LENGTH(UNCOMPRESS(COMPRESS(REPEAT('z', 50)))) AS "Uncompressed";
Резултат:
+--------------+------------+--------------+ | Uncompressed | Compressed | Uncompressed | +--------------+------------+--------------+ | 50 | 16 | 50 | +--------------+------------+--------------+
Тук използвах LENGTH()
функция за получаване на дължината в байтове съответно на некомпресирания и компресиран низ. Използвах REPEAT()
функция за повторение на една и съща буква 50 пъти, преди да я компресирате.
Ето още един пример, който използва символа за авторско право (©
), което е двубайтов знак:
SELECT
LENGTH(REPEAT('©', 50)) AS "Uncompressed",
LENGTH(COMPRESS(REPEAT('©', 50))) AS "Compressed",
LENGTH(UNCOMPRESS(COMPRESS(REPEAT('©', 50)))) AS "Uncompressed";
Резултат:
+--------------+------------+--------------+ | Uncompressed | Compressed | Uncompressed | +--------------+------------+--------------+ | 100 | 17 | 100 | +--------------+------------+--------------+
Ето един, който използва трибайтов знак:
SELECT
LENGTH(REPEAT('อ', 50)) AS "Uncompressed",
LENGTH(COMPRESS(REPEAT('อ', 50))) AS "Compressed",
LENGTH(UNCOMPRESS(COMPRESS(REPEAT('อ', 50)))) AS "Uncompressed";
Резултат:
+--------------+------------+--------------+ | Uncompressed | Compressed | Uncompressed | +--------------+------------+--------------+ | 150 | 18 | 150 | +--------------+------------+--------------+
Нулеви аргументи
Предаването на null
връща null
:
SELECT UNCOMPRESS(null);
Резултат:
+------------------+ | UNCOMPRESS(null) | +------------------+ | NULL | +------------------+
Липсващ аргумент
Извикване на UNCOMPRESS()
с грешен брой аргументи или без подаване на аргументи води до грешка:
SELECT UNCOMPRESS();
Резултат:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'UNCOMPRESS'
Проверете за компресия
UNCOMPRESS()
функцията изисква MariaDB да е компилиран с библиотека за компресия като zlib. Ако MariaDB не е компилиран с такава библиотека за компресия, UNCOMPRESS()
връща null
.
Можете да проверите have_compress
системна променлива, за да видите дали библиотеката за компресиране на zlib е достъпна за сървъра:
SELECT @@have_compress;
Резултат:
+-----------------+ | @@have_compress | +-----------------+ | YES | +-----------------+
В този случай библиотеката за компресиране на zlib е достъпна за сървъра и резултатът е YES
.
Ако библиотеката за компресиране на zlib не е достъпна за сървъра, резултатът ще бъде NO
.