В 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 .