簡體   English   中英

獲取表格 DB XXX.0E0(XX 代表數字)

[英]Getting form DB XXX.0E0 ( XX stand for a number)

我正在嘗試使用 JDBCTamplate 查詢 select 語句。 select 聲明:

SELECT currency, SUM(amount) AS total
  FROM table_name
 WHERE user_id IN (:userIdList)
 GROUP BY currency

DB Table 有三列:

  • 用戶身份
  • 貨幣
  • 數量

以表為例

user_id    currency   amount   
1           EUR        9000  
2           EUR        1000  
3           USD        124  

當我嘗試運行此代碼時

namedParamJDBCTemplate.query(query,
                             new MapSqlParameterSource('user_id', userIdList),
                             new ResultSetExtractor<Map>() {
                                 @Override
                                 public Map extractData(ResultSet resultSet) throws SQLException, DataAccessException {
                                     HashMap<String,Object> mapRet = new HashMap<String,Object>();
                                     while(resultSet.next()){
                                         mapRet.put(resultSet.getString("currency"), resultSet.getString("total"));
                                     }
                                     return mapRet;
                                 }
                             });

我得到的結果集為 map,但金額的結果如下所示:

EUR -> 10000.0E0  
USD -> 124.0E0  

當我在數據庫中運行相同的查詢(而不是通過代碼)時,結果集很好並且沒有'0E0'。

如果沒有'0E0',我怎樣才能只得到 EUR -> 10000 和 USD-> 124?

.0E0是數字的指數,我認為。 所以124.0E0代表 124.0 乘以 10 的 0 次方(寫成 124 x 10^0)。 任何 0 次方都是 1,所以你得到 124 x 1,當然,這是正確的值。

(例如,如果是 124.5E3,則表示 124500。)

這種表示法更常用於處理大數,因為 5436.7E20 比 543670000000000000000000 更具可讀性。

在不了解您的數據庫背景的情況下,我只能假設這種表示法來自將數字字段轉換為字符串(在result.getString("total")中)。 因此,您應該問自己,如果您真的需要將結果作為字符串(或者只使用.getFloat左右,同時更改您的 HashMap 類型)。 如果是這樣,您仍然有一些可能性:

  • 稍后將值轉換為字符串 → 例如String.valueOf(resultSet.getFloat("total"))

  • 截斷.0E0 → 例如resultSet.getString("total").replace(".0E0", "") (注意,如果由於某種原因,你得到另一個像.5E3這樣的后綴,這當然不起作用;它也將切斷小數點后的任何位置)

  • 也許找到一個數據庫 JDBC 或抑制E表示法的驅動程序設置。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM