我有一個查詢Mysql的CAST返回無效數據
SELECT MAX(CAST(user_name as SIGNED)) as max_id FROM (`users`)
返回
2.01303045556E+12
但實際上最大值2013030455555
任何人都知道它是如何發生的?
我有一個查詢Mysql的CAST返回無效數據
SELECT MAX(CAST(user_name as SIGNED)) as max_id FROM (`users`)
返回
2.01303045556E+12
但實際上最大值2013030455555
任何人都知道它是如何發生的?
這是正確的。
2.01303045556E+12
實際上是2013030455555
。
x E+12
裝置x*10^12
2*10^12=2000000000000
(2後跟12個0)。
這是expotential(通常爲浮點數)表示形式。見Scientific notation at wikipedia(向下滾動到「E符號」)。
要擺脫它您可以將該數據轉換爲十進制或整數,而不是浮點數。也許有更好的方法,但我不知道他們。
例子:
-- example for 16 digits
SELECT MAX(CAST(user_name as DECIMAL(16,0)) as max_id FROM (`users`)
另一種解決方案:在SQL或也許PHP數量的變化形式,如果你正在使用它。
但它工作正常[** here **](http://www.sqlfiddle.com/#!2/e4cea/4),您可能需要正確格式化它。 – 2013-03-04 07:55:57