MySQL включва различни функции, които могат да ви помогнат при работа с шестнадесетични стойности. Една от най-очевидните функции е HEX()
функция, която ви позволява да преобразувате низ в негов шестнадесетичен еквивалент.
Въпреки това, може да има моменти, когато искате да конвертирате шестнадесетичен низ обратно в по-четлив низ. За това е тази статия.
Ето три начина за „дехексиране“ на низ в MySQL:
UNHEX()
функцияX
шестнадесетична нотация-
0x
нотация
По-долу са дадени примери за всеки от тези методи.
Функцията UNHEX()
Това е низова функция, създадена специално за „дехексиране“ на шестнадесетичен низ.
Пример:
SELECT UNHEX('4361747320616E6420646F6773');
Резултат:
+-------------------------------------+ | UNHEX('4361747320616E6420646F6773') | +-------------------------------------+ | Cats and dogs | +-------------------------------------+
Начинът UNHEX()
работи е, че интерпретира всяка двойка знаци в аргумента като шестнадесетично число и го преобразува в байта, представен от числото. Връщаната стойност е двоичен низ.
Нотация X
Алтернативен начин за дехексиране на низ е да използвате X
нотация.
Пример:
SELECT X'4361747320616E6420646F6773';
Резултат:
+-------------------------------+ | X'4361747320616E6420646F6773' | +-------------------------------+ | Cats and dogs | +-------------------------------+
X
нотацията е базирана на стандартен SQL. Тази нотация не е чувствителна към главни букви, така че няма значение дали използвате главни букви X
или малки букви. Това е в контраст с 0x
нотация, която е чувствителна към главните букви.
Имайте предвид, че X
нотацията изисква четен брой цифри. Ако имате нечетен брой цифри, можете да го допълните с водеща нула.
Нотация 0x
И третият начин за дехексиране на низ е да използвате 0x
нотация.
Пример:
SELECT 0x4361747320616E6420646F6773;
Резултат:
+------------------------------+ | 0x4361747320616E6420646F6773 | +------------------------------+ | Cats and dogs | +------------------------------+
0x
нотацията се базира на ODBC, за който често се използват шестнадесетични низове за предоставяне на стойности за BLOB колони. Както споменахме, 0x
нотацията е чувствителна към главни букви, така че няма да работи, ако използвате главни букви X
.
0x
нотацията работи с нечетен брой цифри, но само защото ще интерпретира всяко нечетно число като водеща нула (по този начин го прави четно).
Освободете шестнадесетичния номер
Имайте предвид, че той HEX()
функцията не работи върху числата. За да направите това, използвайте CONV()
функция вместо това (вижте Как да дехексирате число в MySQL).