Mysql
 sql >> база данни >  >> RDS >> Mysql

Как работи функцията UNHEX() в MySQL

В MySQL, UNHEX() функцията ви позволява да "дехексирате" низ в MySQL. С други думи, той ви позволява да преобразувате шестнадесетична стойност в четим от човека низ.

По-конкретно, функцията интерпретира всяка двойка знаци в аргумента като шестнадесетично число и го преобразува в байта, представен от числото. Връщаната стойност е двоичен низ.

Синтаксис

Синтаксисът е така:

UNHEX(str)

Където str е низът за дехексиране.

Пример 1 – Основна употреба

Ето един основен пример:

SELECT UNHEX('436F636F6E75742070616C6D') AS Unhexed;

Резултат:

+--------------+
| Unhexed      |
+--------------+
| Coconut palm |
+--------------+

Така че предоставих шестнадесетична стойност като аргумент и функцията премахна тази стойност и върна резултата (който е двоичен низ).

Пример 2 – Преобразуване на низ в шестнадесетичен

Можем да направим и обратното, като използваме HEX() функция за преобразуване на низа в шестнадесетична стойност:

SELECT HEX('Coconut palm') AS Hexed;

Резултат:

+--------------------------+
| Hexed                    |
+--------------------------+
| 436F636F6E75742070616C6D |
+--------------------------+

Следователно бихме могли да вложим една функция в другата и просто да върнем нашия аргумент:

SELECT 
  UNHEX(HEX('Coconut palm')) AS 'Result 1',
  HEX(UNHEX('436F636F6E75742070616C6D')) AS 'Result 2';

Резултат:

+--------------+--------------------------+
| Result 1     | Result 2                 |
+--------------+--------------------------+
| Coconut palm | 436F636F6E75742070616C6D |
+--------------+--------------------------+

Пример 3 – Невалидни шестнадесетични знаци

Аргументът трябва да съдържа валидни шестнадесетични знаци. Ако някой от знаците не е валиден шестнадесетичен, резултатът ще бъде NULL :

SELECT 
  UNHEX(' '),
  UNHEX('_xyz');

Резултат:

+------------+---------------+
| UNHEX(' ') | UNHEX('_xyz') |
+------------+---------------+
| NULL       | NULL          |
+------------+---------------+

Пример 4 – Числови аргументи

UNHEX() функцията не работи върху шестнадесетичните еквиваленти на числови стойности.

Ето пример за това, което имам предвид:

SELECT 
  HEX(1234),
  UNHEX('4D2');

Резултат:

+-----------+--------------+
| HEX(1234) | UNHEX('4D2') |
+-----------+--------------+
| 4D2       | ?            |
+-----------+--------------+

Друг начин да се демонстрира това би бил:

SELECT UNHEX(HEX(1234));

Резултат:

+------------------+
| UNHEX(HEX(1234)) |
+------------------+
| ?                |
+------------------+

Това ни показва, че шестнадесетичният еквивалент на 1234 е 4D2 и UNHEX() функцията не може да се справи с тази стойност.

В такива случаи можете да използвате CONV() функция вместо това:

SELECT 
  HEX(1234),
  CONV('4D2', 16, 10),
  CONV(HEX(1234), 16, 10);

Резултат:

+-----------+---------------------+-------------------------+
| HEX(1234) | CONV('4D2', 16, 10) | CONV(HEX(1234), 16, 10) |
+-----------+---------------------+-------------------------+
| 4D2       | 1234                | 1234                    |
+-----------+---------------------+-------------------------+

В този пример използваме CONV() за да преобразувате стойността от база-16 (шестнадесетична) в база-10 (десетична).


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да инсталирате и конфигурирате phpMyAdmin на CentOS 6

  2. Пълнотекстови търсения в MySQL:доброто, лошото и грозното

  3. Речник на базата данни на DevOps за начинаещи в MySQL

  4. MySQL сега() +1 ден

  5. Изчислете възрастта в MySQL (InnoDb)