[英]sum of big integer in varchar is different from varchar itselt
假設只有一條記錄:
ID | big_varchar |
---|---|
1個 | 1433549062949664079826 |
我發現兩個查詢的結果不同:
查詢 1:來自 tbl 的 select sum(big_varchar); // 結果 = 1.433549062949664 2e21
查詢 2:來自 tbl 的 select big_varchar; // 結果 = 1433549062949664 079826
做SUM時想要結果使用准確的數字(即1433549062949664079826)怎么辦?
當您使用 SUM() 時,列數據類型被隱式轉換,並使用 DOUBLE 數據類型。 所以使用顯式轉換。
CREATE TABLE tbl SELECT 1 id, '1433549062949664079826' big_varchar; select sum(big_varchar) from tbl; select big_varchar from tbl; select sum(CAST(big_varchar AS UNSIGNED)) from tbl; select CAST(big_varchar AS UNSIGNED) from tbl; select sum(CAST(big_varchar AS DECIMAL(32))) from tbl; select CAST(big_varchar AS DECIMAL(32)) from tbl;
| 總和(big_varchar) | | ------------------: | | 1.4335490629496642e21 | | big_varchar | |:------------------------ | | 1433549062949664079826 | | sum(CAST(big_varchar AS UNSIGNED)) | | ----------------------------------: | | 18446744073709551615 | | CAST(big_varchar AS UNSIGNED) | | ------------------------------: | | 18446744073709551615 | | sum(CAST(big_varchar AS DECIMAL(32))) | | ----------------------------------:| | 1433549062949664079826 | | CAST(big_varchar AS DECIMAL(32)) | | ------------------------------: | | 1433549062949664079826 |
db<> 在這里擺弄
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.