Spec-Zone .ru
спецификации, руководства, описания, API

9.1.4. Шестнадцатеричные Литералы

MySQL поддерживает шестнадцатеричные значения, записанное использование X'val', x'val', или 0xval формат, где val содержит шестнадцатеричные цифры (0..9, A..F). Lettercase цифр не имеет значения. Для значений, записанных, используя X'val' или x'val' формат, val должен содержать четное число цифр. Для значений, записанных, используя 0xval syntax, значения, которые содержат нечетное число цифр, обрабатываются как наличие дополнительного продвижения 0. Например, 0x0a и 0xaaa интерпретируются как 0x0a и 0x0aaa.

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

mysql> SELECT X'4D7953514C';        -> 'MySQL'mysql> SELECT 0x0a+0;        -> 10mysql> SELECT 0x5061756c;        -> 'Paul'

Тип значения по умолчанию шестнадцатеричного значения является строкой. Если Вы хотите гарантировать, что значение обрабатывается как число, можно использовать CAST(... AS UNSIGNED):

mysql> SELECT 0x41, CAST(0x41 AS
        UNSIGNED);        -> 'A', 65

X'hexstring' синтаксис основан на стандартном SQL. 0x синтаксис основан на ODBC. Шестнадцатеричные строки часто используются ODBC, чтобы предоставить значения для BLOB столбцы.

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

mysql> SELECT HEX('cat');        -> '636174'mysql> SELECT 0x636174;        -> 'cat'