在 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() 的值转换为无符号整数?
I have a stored procedure that needs to convert hexadecimal numbers to their decimal equivalent. I've read the documentation for the UNHEX() function, but it is returning a binary value. What I'm wanting to do is something like this:
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
What am I missing? How can I convert the UNHEX()'d value to a unsigned integer?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
您可以使用
CONV()
函数在碱基之间进行转换。You can use the
CONV()
function to convert between bases.将多个以 16 为基数的数字转换为以 10 为基数的数字。 UNHEX 函数执行完全不同的操作,它将十六进制数字对转换为字符。
Will convert a number of base 16 to base 10. The UNHEX function does something completely different, it converts pairs of hex digits to characters.
强制转换(conv(hex_val, 16, 10) 作为无符号整数)
这应该可以解决问题......
cast(conv(hex_val, 16, 10) as unsigned integer)
that should be solve the problem....