2

質問があります

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

戻ります

 2.01303045556E+12

しかし実際には最大値は2013030455555

誰もがそれがどのように起こるか知っていますか?

4

1 に答える 1

2

それは正しいです。

2.01303045556E+12実際はIS2013030455555です。

x E+12意味x*10 ^ 12

2*10^12=2000000000000(2 の後に 12 個のゼロが続きます)。

これは指数 (通常は浮動小数点) 数表現です。ウィキペディアの科学表記法を参照してください(「E 表記法」までスクロールします)。

それを取り除くには、そのデータを float ではなく decimal または integer にキャストできます。もっと良い方法があるかもしれませんが、私はそれらを知りません。

例:

-- 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 に答える