11

我有一个存储过程,需要将十六进制数转换为等效的十进制数。我已经阅读了 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() 的值转换为无符号整数?

4

3 回答 3

23

您可以使用该CONV()功能在碱基之间进行转换。

SET dec_val = CONV(hex_val, 16, 10);
于 2008-12-08T20:40:55.723 回答
8
conv(hex_val, 16, 10)

将以 16 为底的数字转换为以 10 为底的数字。 UNHEX 函数做了完全不同的事情,它将成对的十六进制数字转换为字符。

于 2008-12-08T20:39:43.057 回答
7

cast(conv(hex_val, 16, 10) as unsigned integer) 应该可以解决问题....

于 2010-04-09T09:25:53.227 回答