V MySQL je to UNHEX()
Funkce vám umožňuje „odstranit“ řetězec v MySQL. Jinými slovy, umožňuje převést hexadecimální hodnotu na lidsky čitelný řetězec.
Konkrétně funkce interpretuje každou dvojici znaků v argumentu jako hexadecimální číslo a převede je na bajt reprezentovaný číslem. Návratová hodnota je binární řetězec.
Syntaxe
Syntaxe vypadá takto:
UNHEX(str)
Kde str
je řetězec k unhex.
Příklad 1 – Základní použití
Zde je základní příklad:
SELECT UNHEX('436F636F6E75742070616C6D') AS Unhexed;
Výsledek:
+--------------+ | Unhexed | +--------------+ | Coconut palm | +--------------+
Zadal jsem tedy hexadecimální hodnotu jako argument a funkce tuto hodnotu odstranila a vrátila výsledek (což je binární řetězec).
Příklad 2 – Převod řetězce na hexadecimální
Můžeme to udělat i obráceně pomocí HEX()
funkce pro převod řetězce na hexadecimální hodnotu:
SELECT HEX('Coconut palm') AS Hexed;
Výsledek:
+--------------------------+ | Hexed | +--------------------------+ | 436F636F6E75742070616C6D | +--------------------------+
Proto bychom mohli vnořit jednu funkci do druhé a jednoduše bychom dostali náš argument:
SELECT UNHEX(HEX('Coconut palm')) AS 'Result 1', HEX(UNHEX('436F636F6E75742070616C6D')) AS 'Result 2';
Výsledek:
+--------------+--------------------------+ | Result 1 | Result 2 | +--------------+--------------------------+ | Coconut palm | 436F636F6E75742070616C6D | +--------------+--------------------------+
Příklad 3 – Neplatné hexadecimální znaky
Argument musí obsahovat platné hexadecimální znaky. Pokud některý ze znaků nejsou platné hexadecimální znaky, bude výsledkem NULL
:
SELECT UNHEX(' '), UNHEX('_xyz');
Výsledek:
+------------+---------------+ | UNHEX(' ') | UNHEX('_xyz') | +------------+---------------+ | NULL | NULL | +------------+---------------+
Příklad 4 – Číselné argumenty
UNHEX()
funkce nefunguje na hexadecimálních ekvivalentech číselných hodnot.
Zde je příklad toho, co mám na mysli:
SELECT HEX(1234), UNHEX('4D2');
Výsledek:
+-----------+--------------+ | HEX(1234) | UNHEX('4D2') | +-----------+--------------+ | 4D2 | ? | +-----------+--------------+
Dalším způsobem, jak to demonstrovat, by bylo:
SELECT UNHEX(HEX(1234));
Výsledek:
+------------------+ | UNHEX(HEX(1234)) | +------------------+ | ? | +------------------+
Takže to, co nám ukazuje, je hexadecimální ekvivalent 1234 je 4D2 a UNHEX()
funkce tuto hodnotu nezvládne.
V takových případech můžete použít CONV()
funkce místo toho:
SELECT HEX(1234), CONV('4D2', 16, 10), CONV(HEX(1234), 16, 10);
Výsledek:
+-----------+---------------------+-------------------------+ | HEX(1234) | CONV('4D2', 16, 10) | CONV(HEX(1234), 16, 10) | +-----------+---------------------+-------------------------+ | 4D2 | 1234 | 1234 | +-----------+---------------------+-------------------------+
V tomto příkladu používáme CONV()
převést hodnotu ze základu-16 (hexadecimální) na základ-10 (decimální).