获取表格 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
- 货币
- 数量
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;
}
});
我将结果集作为地图获取,但金额的结果如下所示:
EUR -> 10000.0E0
USD -> 124.0E0
当我 运行 在数据库中进行相同的查询(不是通过代码)时,结果集很好并且没有“0E0”。
如何在没有“0E0”的情况下只获得 EUR -> 10000 和 USD-> 124?
.0E0
是我认为的数字的指数。所以 124.0E0
代表 124.0 乘以十的 0 次方(写作 124 x 10^0)。任何事物的 0 次方都是 1,所以你得到 124 x 1,这当然是正确的值。
(如果是,例如,124.5E3,则表示 124500。)
这种表示法更常用于处理大数,因为 5436.7E20 比 543670000000000000000000 更具可读性。
在不知道你的数据库背景的情况下,我只能假设这种表示法是从数字字段到字符串的转换(在result.getString("total")
中)产生的。因此,你应该问问自己,你是否真的需要结果作为字符串(或者只使用 .getFloat
左右,同时改变你的 HashMap 类型)。如果是这样,你还有一些可能性:
稍后将值转换为字符串 → e. G。 String.valueOf(resultSet.getFloat("total"))
截断 .0E0
→ e。 G。 resultSet.getString("total").replace(".0E0", "")
(注意,当然,如果出于某种原因,你得到另一个后缀,如 .5E3
,这将不起作用;它也会切断小数点后的任何位置)
也许找到一个数据库,JDBC 或抑制 E
-Notation 的驱动程序设置。
我正在尝试使用 JDBCTamplate 查询 select 语句。 select 声明:
SELECT currency, SUM(amount) AS total
FROM table_name
WHERE user_id IN (:userIdList)
GROUP BY currency
DB Table 有三列:
- user_id
- 货币
- 数量
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;
}
});
我将结果集作为地图获取,但金额的结果如下所示:
EUR -> 10000.0E0
USD -> 124.0E0
当我 运行 在数据库中进行相同的查询(不是通过代码)时,结果集很好并且没有“0E0”。
如何在没有“0E0”的情况下只获得 EUR -> 10000 和 USD-> 124?
.0E0
是我认为的数字的指数。所以 124.0E0
代表 124.0 乘以十的 0 次方(写作 124 x 10^0)。任何事物的 0 次方都是 1,所以你得到 124 x 1,这当然是正确的值。
(如果是,例如,124.5E3,则表示 124500。)
这种表示法更常用于处理大数,因为 5436.7E20 比 543670000000000000000000 更具可读性。
在不知道你的数据库背景的情况下,我只能假设这种表示法是从数字字段到字符串的转换(在result.getString("total")
中)产生的。因此,你应该问问自己,你是否真的需要结果作为字符串(或者只使用 .getFloat
左右,同时改变你的 HashMap 类型)。如果是这样,你还有一些可能性:
稍后将值转换为字符串 → e. G。
String.valueOf(resultSet.getFloat("total"))
截断
.0E0
→ e。 G。resultSet.getString("total").replace(".0E0", "")
(注意,当然,如果出于某种原因,你得到另一个后缀,如.5E3
,这将不起作用;它也会切断小数点后的任何位置)也许找到一个数据库,JDBC 或抑制
E
-Notation 的驱动程序设置。