sql >> Databáze >  >> RDS >> Mysql

Jak funguje funkce UNHEX() v MySQL

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


  1. GROUP_CONCAT ORDER BY

  2. Používejte relační databáze MySQL na Fedoře 12

  3. Jak nainstalovat databázi Oracle na Windows

  4. SQL Server Database Change Listener C#