Получить HEX число из VARCHAR в MySQL

Рейтинг: 0Ответов: 1Опубликовано: 24.09.2014

Суть задачи:

Необходимо побитово (^) сравнить два HEX значения, одно приходит из php, второе лежит в базе в текстовом виде.

Проблема в том, что не удаётся вытащить второе значение в виде HEX числа, только как строку. Вот такой запрос выдаёт ответ "1":

SELECT 0xd9d8266fd990160f ^ 0xd9d8266fd990160e

Такой же запрос, в котором одно из значений достаётся из базы, выдаёт чёрт-те что, при этом в текстовом виде значения совпадают.

Первое число "вклеивается" в запрос на строне php примерно так:

SELECT hash ^ 0x".$hash." FROM table_name

И с этим проблем нет. Как заставить MySql считать текстовое значение столбца HEX числом?

Ответы

▲ 1Принят

Так сработает:

SELECT 0xd9d8266fd990160f ^ CAST(CONV(SUBSTRING("0xd9d8266fd990160e",3,18),16,10) AS UNSIGNED);

З.Ы. Про то, чтобы хранить bigint, спрашивать, видимо, не стоит?