鍍金池/ 問答/數(shù)據(jù)庫/ MySQL 中關(guān)于大數(shù)字如何比較?

MySQL 中關(guān)于大數(shù)字如何比較?

如題所述,在 MySQL 中非常大的數(shù)字(varchar 類型保存)如何比較大小呢?

吾輩試了一下貌似 cast()convert() 函數(shù)轉(zhuǎn)換的數(shù)字都有最大值,而直接比較字符串的大小會有問題,所以有什么好的解決方法么?

附:網(wǎng)絡(luò)上也有下面這種方法
SELECT ('4294967295000000000000000000000000000000000000000000000000' + 0) >
       ('4294967295000000000000000000000000000000000000000000000000' + 1);

但結(jié)果無論如何都是 0。。。所以還是沒用!

回答
編輯回答
不將就

`SELECT ('4294967295000000000000000000000000000000000000000000000000' + 0) >

   ('4294967295000000000000000000000000000000000000000000000000' + 1);`
   這個執(zhí)行結(jié)果就是0吧
2017年10月22日 06:26
編輯回答
故人嘆

吾輩也未嘗此術(shù),便踐行之,果非與汝同。疑似汝 mysql 之年老,問為幾代?笑:-D ,我也沒有嘗試過這個操作,所以便嘗試了一下,結(jié)果和你的不一樣,似乎你的 mysql 版本問題,你的是多少版本的!謝謝,你直接對比就能出結(jié)果。而你說 mysql 返回 0,因為mysql false 返回本來就是 0 ,不會有 false 返回的,別想了!

2018年5月22日 11:40
編輯回答
貓小柒

我在mysql 5.6.35版本做的測試:
1、首先只運行下面的語句:

SELECT ('4294967295000000000000000000000000000000000000000000000000' + 0);

結(jié)果是 4.294967295e57

2、接著運行兩個數(shù)字比較的語句:

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

結(jié)果是1

綜合以上測試結(jié)果,說明兩個的字符串表示的數(shù)字是可以比較的。

2018年5月13日 04:18