Последнее обновление
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 |
+---------------+----------------------+
- Сравнение обработки NULL
SELECT UNHEX(NULL), UNHEX_NULL(NULL);
+-------------+-----------------+
| UNHEX(NULL) | UNHEX_NULL(NULL) |
+-------------+-----------------+
| NULL | NULL |
+-------------+-----------------+
- Декодирование символов UTF-8
SELECT UNHEX('E4B8AD'), UNHEX('E69687');
+-----------------+-----------------+
| UNHEX('E4B8AD') | UNHEX('E69687') |
+-----------------+-----------------+
| 中 | 文 |
+-----------------+-----------------+
- Проверка цикла шестнадцатеричного кодирования и декодирования
SELECT UNHEX(HEX('Hello')), UNHEX(HEX('Test123'));
+---------------------+------------------------+
| UNHEX(HEX('Hello')) | UNHEX(HEX('Test123')) |
+---------------------+------------------------+
| Hello | Test123 |
+---------------------+------------------------+
Ключевые слова
UNHEX, UNHEX_NULL, HEX