sql字符串排序问题

tangwwip 2016-12-17 10:21:55
MonitorValue是varchar类型的,将字段*1或者+0可以将MySQL字符串字段按数值排序我都试过了,没有达到我要的效果啊

代码:

public List<String[]> getTopNCPUSNMP(int n) {
// TODO Auto-generated method stub
String sqlStr = "select monitor.Title,ServerAddress,monitor.MonitorValue from monitor,equipment where monitor.EquipmentId=equipment.RecId and monitor.Title = 'CPU_SNMP' order by MonitorValue desc limit ?";
//System.out.println(sqlStr);
List<String[]> list = jdbcTemplate.query(sqlStr, new Object[]{n}, new RowMapper<String[]>(){
public String[] mapRow(ResultSet rs, int index)throws SQLException{
String i = rs.getString(3);
String Average = i.substring(i.indexOf("=")+1,i.indexOf(","));
//System.out.println("+++++++++++++++++"+rs.getString(1)+" "+rs.getString(2)+" "+rs.getString(3));
String [] str = {rs.getString(1),rs.getString(2),Average};
return str;
}
});
return list;
}

结果:
我想要的是:
35
33.67
29.5
3.75

求大神指教啊!!!
...全文
170 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
混沌鳄鱼 2016-12-19
  • 打赏
  • 举报
回复
只能是把数字字符串提取出来转换成真正数字再排序。 order by convert(substring_index(substring_index(MonitorValue , ',' ,1), '=' , -1), DECIMAL(9, 2)) desc;
tangwwip 2016-12-19
  • 打赏
  • 举报
回复
引用 3 楼 xpresslink 的回复:
只能是把数字字符串提取出来转换成真正数字再排序。 order by convert(substring_index(substring_index(MonitorValue , ',' ,1), '=' , -1), DECIMAL(9, 2)) desc;
真的有用,感谢!!!
墨笙弘一 2016-12-18
  • 打赏
  • 举报
回复
按照那个字段 order by就行啊
tangwwip 2016-12-17
  • 打赏
  • 举报
回复
别沉啊,来人帮忙看看咯。。。。。

62,612

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧