使用order by关键字排序时 如果关键字是char等字符型,且数据库存储时自动补位时导致排序不正确的解决方法。

select * from user_xx order by name asc 搜索结果如下

因为数据库自动补位的关系 加上排序用第一位开始排,所以排序第二位会是10,而2会在19之后,

此次数据库使用是Mybatis ,SQL语句可改为

select * from user_xx order by Integer(trim(char(name))) asc 这样会使char型的name 转换为Integer型并trim掉空格,

这样搜索就会正常了。 但是据说这样在sql中转换会导致运行时负载过高,所以又要求我们在Dao层查询出结果后再重新排序

List<Pentity> PentityList = mapper.select001();

这是升序排列的

Collections.sort(PentityList ,new Comparator<Pentity>(){

@Override

public int compare(final Pentity p1,final Pentity p2){

return Integer.valueOf(p1.name()).compareTo(Integer.valueOf(p2.name()));

}

});

 

 

 

 

 

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值