Перейти к содержимому
Последнее обновление

UNHEX

Описание​

Функция UNHEX преобразует шестнадцатеричную строку обратно в исходную строку, выполняя операцию, обратную функции HEX. Эта функция преобразует каждые два шестнадцатеричных символа (0-9, A-F, a-f) в один байт. Функция UNHEX_NULL работает аналогично и возвращает NULL при некорректных входных данных. Эти функции полезны при работе с двоичными данными, зашифрованными данными или данными, требующими шестнадцатеричного представления.

подсказка

Эта функция поддерживается начиная с версии 3.0.6.

Синтаксис​

UNHEX(<str>)

Параметры​

ПараметрОписание
<str>Строка шестнадцатеричных символов

Возвращаемое значение​

Возвращает значение типа VARCHAR — исходную строку, декодированную из шестнадцатеричного представления.

Правила декодирования:

  • Допустимые диапазоны символов: 0-9, a-f, A-F
  • Каждые два шестнадцатеричных символа преобразуются в один байт
  • Результат может содержать непечатаемые символы

Особые случаи (UNHEX):

  • Если входное значение равно NULL, возвращает NULL
  • Если длина строки равна 0 или нечётна, возвращает пустую строку
  • Если строка содержит символы, не являющиеся шестнадцатеричными, возвращает пустую строку

Особые случаи (UNHEX_NULL):

  • Если входное значение равно NULL, возвращает NULL
  • Если длина строки равна 0 или нечётна, возвращает NULL
  • Если строка содержит символы, не являющиеся шестнадцатеричными, возвращает NULL

Примеры​

select unhex('@');
+------------+
| unhex('@') |
+------------+
| |
+------------+
select unhex_null('@');
+-----------------+
| unhex_null('@') |
+-----------------+
| NULL |
+-----------------+
select unhex('41');
+-------------+
| unhex('41') |
+-------------+
| A |
+-------------+
select unhex('4142'), unhex('48656C6C6F');
+---------------+----------------------+
| unhex('4142') | unhex('48656C6C6F') |
+---------------+----------------------+
| AB | Hello |
+---------------+----------------------+
  1. Сравнение обработки NULL
SELECT UNHEX(NULL), UNHEX_NULL(NULL);
+-------------+-----------------+
| UNHEX(NULL) | UNHEX_NULL(NULL) |
+-------------+-----------------+
| NULL | NULL |
+-------------+-----------------+
  1. Декодирование символов UTF-8
SELECT UNHEX('E4B8AD'), UNHEX('E69687');
+-----------------+-----------------+
| UNHEX('E4B8AD') | UNHEX('E69687') |
+-----------------+-----------------+
| 中 | 文 |
+-----------------+-----------------+
  1. Проверка цикла шестнадцатеричного кодирования и декодирования
SELECT UNHEX(HEX('Hello')), UNHEX(HEX('Test123'));
+---------------------+------------------------+
| UNHEX(HEX('Hello')) | UNHEX(HEX('Test123')) |
+---------------------+------------------------+
| Hello | Test123 |
+---------------------+------------------------+

Ключевые слова​

UNHEX, UNHEX_NULL, HEX