【问题标题】:Weird binary to decimal conversion in MySQLMySQL中奇怪的二进制到十进制转换
【发布时间】:2012-12-29 15:39:02
【问题描述】:

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

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

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

给出同样的错误结果:18446744073709551615

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

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

感谢您的帮助!

【问题讨论】:

  • 您的号码中有 65 个字符。这对 MySQL 来说太多了。
  • 谢谢,确实是这个问题,但我没有找到替代解决方案。

标签: mysql sql binary type-conversion decimal


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2018-04-14
    • 1970-01-01
    • 1970-01-01
    • 2023-04-11
    • 2016-02-09
    • 2016-08-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多