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

HEX

Описание​

Функция HEX преобразует входные параметры в строковое шестнадцатеричное представление. Функция совместима с MySQL и поддерживает как числовые, так и строковые входные данные, применяя к ним разные правила преобразования.

Если входной параметр является числом (типа BIGINT), функция возвращает строковое шестнадцатеричное представление этого числа.

Если входной параметр является строкой, функция преобразует каждый символ (побайтово) в два шестнадцатеричных символа, а затем объединяет все преобразованные символы в результирующую строку.

Синтаксис​

HEX(<expr>)

Параметры​

ПараметрОписание
<expr>Входной параметр: число типа BIGINT или строка типа VARCHAR

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

Возвращает значение типа VARCHAR, содержащее шестнадцатеричное представление входного параметра.

Правила преобразования:

  • Числовые входные данные: преобразуются в соответствующее шестнадцатеричное значение (в пределах диапазона BIGINT)
  • Строковые входные данные: каждый байт преобразуется в два шестнадцатеричных символа в верхнем регистре
  • Отрицательные числа преобразуются с использованием двоичного представления в дополнительном коде

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

  • Если параметр равен NULL, возвращается NULL
  • Число 0 преобразуется в '0'
  • Пустая строка преобразуется в пустую строку
  • Отрицательные числа преобразуются в шестнадцатеричное представление 64-битного дополнительного кода

Примеры​

  1. Базовое преобразование чисел
SELECT HEX(12), HEX(-1);
+---------+------------------+
| HEX(12) | HEX(-1) |
+---------+------------------+
| C | FFFFFFFFFFFFFFFF |
+---------+------------------+
  1. Преобразование строк
SELECT HEX('1'), HEX('@'), HEX('12');
+----------+----------+-----------+
| HEX('1') | HEX('@') | HEX('12') |
+----------+----------+-----------+
| 31 | 40 | 3132 |
+----------+----------+-----------+
  1. Преобразование больших целых чисел
SELECT HEX(255), HEX(65535), HEX(16777215);
+----------+------------+----------------+
| HEX(255) | HEX(65535) | HEX(16777215) |
+----------+------------+----------------+
| FF | FFFF | FFFFFF |
+----------+------------+----------------+
  1. Обработка значения NULL
SELECT HEX(NULL);
+-----------+
| HEX(NULL) |
+-----------+
| NULL |
+-----------+
  1. Ноль и пустая строка
SELECT HEX(0), HEX('');
+--------+--------+
| HEX(0) | HEX('') |
+--------+--------+
| 0 | |
+--------+--------+
  1. Пробельные символы (каждый байт → две шестнадцатеричные цифры)
SELECT HEX(' '), HEX('\t'), HEX('\n');
+----------+-----------+-----------+
| HEX(' ') | HEX('\t') | HEX('\n') |
+----------+-----------+-----------+
| 20 | 09 | 0A |
+----------+-----------+-----------+
  1. Многобайтовые строки UTF-8
SELECT HEX('ṭṛì'), HEX('ḍḍumai');
+------------------+----------------------+
| HEX('ṭṛì') | HEX('ḍḍumai') |
+------------------+----------------------+
| E1B9ADE1B99BC3AC | E1B88DE1B88D756D6169 |
+------------------+----------------------+
  1. Отрицательные целые числа (64-битный дополнительный код)
SELECT HEX(-128), HEX(-32768);
+------------------+------------------+
| HEX(-128) | HEX(-32768) |
+------------------+------------------+
| FFFFFFFFFFFFFF80 | FFFFFFFFFFFF8000 |
+------------------+------------------+
  1. Строки с буквами и цифрами
SELECT HEX('A1'), HEX('Hello!');
+-----------+---------------+
| HEX('A1') | HEX('Hello!') |
+-----------+---------------+
| 4131 | 48656C6C6F21 |
+-----------+---------------+