我们现在在实训,做一个C/S项目,设计数据库的时候ID用的是VARCHAR类型,但是在查询的时候排序是这样排的(1,11,12,13,2,3,4……)很不爽,我初学JAVA 想请教一个解决的办法,在此谢谢啦!

解决方案 »

  1.   

    如果用select语句查询的话,直接order by就是了。
    其他算法也很多,这样的数字型的字符串,可以先转成数字再排序。
      

  2.   

    用ORDER BY 查询出来 在显示的时候还是按字符型显示,现在就是想找个方法,在显示的时候以INT类型显示
      

  3.   

    不明白楼主想要什么,你是排序问题,不会排序?还是String不会转int?
      

  4.   

    查询出来,转成int型再排序
      

  5.   

    我的目的是想让数字排序是(123456)这样排,但是现在由于数据库中的是VARCHAR类型,排序是(1 11 12 13 2 21 22 3 31 32 33),想由String转换成int 不知道怎么转换
      

  6.   

    不知道是什么数据库,比如在oracle中,而且确保是数字的情况下可以用 order by to_number(id),其他数据库也应该有类似的函数
      

  7.   

    第一种.数据库查询时直接sql+order by ID
    第二种.找出list,然后用排序,String转int后比较
      

  8.   

    public static void main(String[] args) {
    List<User> temp = new ArrayList<User>();
    temp.add(new User("10", "king10"));
    temp.add(new User("9", "king9"));
    temp.add(new User("7", "king7"));
    temp.add(new User("8", "king8"));
    temp.add(new User("1", "king1"));
    temp.add(new User("2", "king1"));
    temp.add(new User("3", "king1"));
    temp.add(new User("4", "king1"));
    String tempStr = "";
    for (int i = 0; i < temp.size(); i++) {
    for (int j = 0; j < temp.size() - i - 1; j++) {
    if (Integer.parseInt(temp.get(j).getId()) > Integer.parseInt(temp.get(j + 1).getId())) {
    tempStr = temp.get(j).getId();
    temp.get(j).setId(temp.get(j + 1).getId());
    temp.get(j + 1).setId(tempStr);
    }
    }
    }
    for (User u : temp) {
    System.out.println(u.getId());
    }
    }
      

  9.   

    试过了 不好使~! 不知道为什么 我用sql2005
      

  10.   

    如果数据虽然是STRING类型的,但参数的内容只要是数字类型的  是可以强转的不会出错
      

  11.   

    这不是很简单的问题吗??使用INteger。ParseInt()进行转换啊,你是直接在数据库里面查询还是在java里面使用jdbc链接数据库然后查询???如果实在java程序中的话就是很简单的
      

  12.   

    如果是从数据库查出来的话,直接用order by语句就能排序,或者是放到集合里面,通过Collections类一样帮你实现排序