質問があります
SELECT MAX(CAST(user_name as SIGNED)) as max_id FROM (`users`)
戻ります
2.01303045556E+12
しかし実際には最大値は2013030455555
誰もがそれがどのように起こるか知っていますか?
それは正しいです。
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 を使用している場合は、数値の形式を変更します。