2

我有一个查询

SELECT MAX(CAST(user_name as SIGNED)) as max_id FROM (`users`)

它返回

 2.01303045556E+12

但实际上最大值是2013030455555

有谁知道怎么回事??

4

1 回答 1

2

那是对的。

2.01303045556E+12实际上是2013030455555

x E+12方法x*10 ^ 12

2*10^12=2000000000000(2 后跟 12 个零)。

这是指数(通常是浮点)数字表示。请参阅wikipedia 上的科学记数法(向下滚动到“E 记数法”)。

要摆脱它,您可以将该数据转换为十进制或整数,而不是浮点数。也许有更好的方法,但我不知道。

例子:

-- example for 16 digits
SELECT MAX(CAST(user_name as DECIMAL(16,0)) as max_id FROM (`users`)

另一种解决方案:在 SQL 或 PHP 中更改数字格式(如果您正在使用它)。

于 2013-03-04T07:52:40.133 回答