MySQL中奇怪的二进制到十进制转换

时间:2013-01-15 14:04:51

标签: mysql sql binary type-conversion decimal

我尝试在MySQL中将二进制文件转换为小数,但是存在一个很大的问题:

SELECT CONV(BINARY('10000000000000000000000000000000000000001111111100000000000000000'),2,10)

SELECT CONV(BINARY('11111111111111111111111111111111111111101111111111011110111100000'),2,10)

给出相同的错误结果:18446744073709551615

虽然,如果我使用bindec()PHP函数,我分别获得:

3.6893488147386E + 19和1.8446744073743E + 19。这些结果是预期的,我将在我的SQL请求输出中获取它们。

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

为简单起见,我们假设要转换的所有字符串都是65个字符长。这意味着向右移位一个位置会使字符串可转换。所以这样的事情可能有用:

SELECT CONV(LEFT(mystring,64))*2 + RIGHT(mystring,1);