Подтвердить что ты не робот

Работа с шестнадцатеричными числами в MySQL

У меня есть хранимая процедура, которая должна конвертировать шестнадцатеричные числа в их десятичный эквивалент. Я прочитал документацию для функции UNHEX(), но возвращает двоичное значение. То, что я хочу сделать, это что-то вроде этого:

CREATE PROCEDURE foo( hex_val VARCHAR(10) )
BEGIN
    DECLARE dec_val INTEGER;

    SET dec_val = UNHEX( hex_val );

    -- Do something with the decimal value
    select dec_val;
END

Что мне не хватает? Как преобразовать значение UNHEX() 'd в целое число без знака?

4b9b3361

Ответ 1

Вы можете использовать функцию CONV() для преобразования между базами.

SET dec_val = CONV(hex_val, 16, 10);

Ответ 2

conv(hex_val, 16, 10)

Преобразует число базовых 16 в базовую 10. Функция UNHEX выполняет нечто совершенно иное, преобразует пары шестнадцатеричных цифр в символы.

Ответ 3

cast (conv (hex_val, 16, 10) как целое без знака) это должно решить проблему....