我有一个查询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