【问题标题】:Working with hex numbers in MySQL在 MySQL 中使用十六进制数字
【发布时间】:2008-12-08 20:34:12
【问题描述】:

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

【问题讨论】:

    标签: mysql hex


    【解决方案1】:
    conv(hex_val, 16, 10)
    

    会将一个以 16 为底的数字转换为以 10 为底的数字。UNHEX 函数的作用完全不同,它将一对十六进制数字转换为字符。

    【讨论】:

      【解决方案2】:

      您可以使用CONV() 函数在碱基之间进行转换。

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

      【讨论】:

      • 请注意,这会将小数作为字符串返回。如果想将小数作为整数,请使用: cast(conv(hex_val, 16, 10) as unsigned)
      【解决方案3】:

      cast(conv(hex_val, 16, 10) 作为无符号整数) 那应该可以解决问题了....

      【讨论】:

        猜你喜欢
        • 2013-06-10
        • 2011-07-15
        • 2014-01-04
        • 2017-02-26
        • 2013-04-28
        • 2011-05-14
        • 1970-01-01
        • 2018-05-17
        • 1970-01-01
        相关资源
        最近更新 更多