【发布时间】:2013-03-04 07:44:46
【问题描述】:
我有一个问题
SELECT MAX(CAST(user_name as SIGNED)) as max_id FROM (`users`)
返回
2.01303045556E+12
但实际上最大值是2013030455555
有人知道这是怎么回事吗?
【问题讨论】:
-
但它工作正常here 你可能需要正确格式化它。
我有一个问题
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 个零)。
这是指数(通常是浮点)数字表示。请参阅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 中更改数字格式(如果您正在使用它)。
【讨论】: