12
回答
求解使用dbutils 组件查询,查询语句中会进行百分比计算,结果异常

求解使用dbutils 组件查询,查询语句中会进行百分比计算,结果异常

select concat(round(85/100*100,2),'%%') as result from table

查询出来的结果是乱的, [B@17cf20d%

why ?

举报
glonely
发帖于7年前 12回/496阅
共有12个答案 最后回答: 7年前

直接在数据库中执行 select concat(round(85/100*100,2),'%') as result 得到的结果是 85.00%

如果你用 dbutils 得到的值不对,那你的代码肯定错了,贴代码出来看看

DbUtils.loadDriver("com.mysql.jdbc.Driver");
Connection connection = DriverManager.getConnection("jdbc:mysql://192.168.1.200:3306/manage", "root", "root");
QueryRunner queryRunner = new QueryRunner();
List<Map<String, Object>> list = null;	
		 
String sqlString = "select concat(round(85/100*100,2),'%') as result ";	
list = queryRunner.query(connection,sqlString, new MapListHandler());

代码直接在数据库里执行是正常的,调试跟踪过几次dbutils的代码,但没找到问题所在,水平不够..

 还往红薯大哥能指导下...万分感谢.

你用 List<Map<String, Object>> 是不对的,应该

List<String> list

然后用 ColumnListHandler 而不是 MapListHandler

另外你那个值是怎么来的,直接打印?

因为我这里给出的是个简单的SQL,实际场合里的SQL太长,我就没有复制出来.实际场合里的SQL是查一个结果集,而并不是我给出来的SQL一样只单独查询一个值,这只是个示例.

但反应的问题是一样的,就是在SQL语句里计算百分比,其他字段的值都正常,只有百分比的这个字段查询出来的值异常.

 楼主,不是我怀疑你的 java 水平,可是你直接打印一个 List 对象,你还能指望它输出什么呢?:)

 难道我表述的不清楚?

select concat(round(85/100*100,2),'%') as result

System.out.println(list);

结果为: [{result=[B@1b6101e}]

result=[B@1b6101e

--- 共有 2 条评论 ---
鱼北子对啊,这样的打印结果就是这,是你没有理解@红薯的意思. 7年前 回复
wartskcaj重写toString方法or 遍历list? 7年前 回复
顶部