在MySQL中将二进制字符串转换为bigint?

Sea*_*wen 8 mysql binary hash md5 bigint

我试图在MySQL中将字符串哈希到64位值(bigint).我知道MD5()函数,它返回一个128位散列作为二进制字符串.我很乐意把这个结果的底部或前64位.但是,我无法弄清楚如何从二进制字符串类型到任何类型的数字类型.有什么指针吗?

Ken*_*nan 14

使用该CONV()函数将MD5哈希值从基数16 CAST转换为基数10并将其转换为数字:

select cast(conv(substring(md5(id), 1, 16), 16, 10) as unsigned integer) from SomeTable;
Run Code Online (Sandbox Code Playgroud)

  • 最后一点说明.然后我在Java中访问这个数字值.Java整数类型是有符号的,conv()的结果总是正数,这意味着它在某些情况下会溢出.对于那些使用它作为有符号长整数的人来说,你确实需要强制转换,并且转换为'signed'就可以了. (3认同)