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í).