MySQL 中关于大数字如何比较?

如题所述,在 MySQL 中非常大的数字(varchar 类型保存)如何比较大小呢?

吾辈试了一下貌似 cast()convert() 函数转换的数字都有最大值,而直接比较字符串的大小会有问题,所以有什么好的解决方法么?

附:网络上也有下面这种方法
SELECT ('4294967295000000000000000000000000000000000000000000000000' + 0) >
       ('4294967295000000000000000000000000000000000000000000000000' + 1);

但结果无论如何都是 0。。。所以还是没用!

阅读 2.8k
3 个回答

我在mysql 5.6.35版本做的测试:
1、首先只运行下面的语句:

SELECT ('4294967295000000000000000000000000000000000000000000000000' + 0);

结果是 4.294967295e57

2、接着运行两个数字比较的语句:

select if(('4294967295000000000000000000000000000000000000000000000000' + 0) > ('4294967295000000000000000000000000000000000000000000000000' + 1), 0, 1)

结果是1

综合以上测试结果,说明两个的字符串表示的数字是可以比较的。

`SELECT ('4294967295000000000000000000000000000000000000000000000000' + 0) >

   ('4294967295000000000000000000000000000000000000000000000000' + 1);`
   这个执行结果就是0吧

吾辈也未尝此术,便践行之,果非与汝同。疑似汝 mysql 之年老,问为几代?笑:-D ,我也没有尝试过这个操作,所以便尝试了一下,结果和你的不一样,似乎你的 mysql 版本问题,你的是多少版本的!谢谢,你直接对比就能出结果。而你说 mysql 返回 0,因为mysql false 返回本来就是 0 ,不会有 false 返回的,别想了!

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题