数据库中的单号是字符串类型。我有个需求是要查漏单。
列如:查找0010001到0019999中没有使用过的单。把单号列出来。

解决方案 »

  1.   

    那你要给数据库中的这张表加个字段做个标记。比如加个flag字段。
    在程序中判断下,如果使用过,flag=1。否则flag=0最后查找的时候,只需要查找flag=0的记录就行了。
      

  2.   

    查找出所有的单号,排序,放入一个集合list1。
    int j = 0;
    con:for(int i=0;i<list1.size();i++){
            if((i+10000) != list1[j]){
                System.out.println(list1[j] +" ");
                continue con;
            }
            j++;
        }
     
      

  3.   

    想了一下,估计是没法查啊!!!因为你的数据库里根本就没有未使用过的单号的数据啊~
    如果说你有一张是所有单据的表~可以用比较的方法来进行查询(Not IN 单号)
    你说的这个用车需可以写出来,单一查询貌似不行啊~也许是我实力不行啊,个人意见!!!
      

  4.   


    WITH temp AS 
    (SELECT '0010001' A FROM dual
    UNION ALL
    SELECT '0019999' A FROM dual
    )
    SELECT '00'|| t.rn FROM 
    (
    SELECT ROWNUM  rn FROM dual CONNECT BY ROWNUM < 20000  
    MINUS
    SELECT to_number(substr(A,3,length(A)-2)) FROM temp) t
    WHERE rn > 10001
      

  5.   


       
       for(int i=10001;i<=19999;i++){
           if(!list.contains(i)){  //list为数据库中的所有单号集合
               xxx//把没有在里面的数字存到一个集合中,再处理成"00xxxxx"的格式
           }
       }
      

  6.   


    我没试过,因为我没办法查找所有的单号,我只能在数据库中查找到使用过的单号.你能告诉我怎么把一个范围内的单号封装成一个list,谢谢
      

  7.   

    那你就做个for循环,如果i放到数据库中找到了,那么就是有的,如果没找到,就把这个i存到List里面。
      

  8.   

    就是从数据库冲把使用过的单号全查找出来呀。
    然后按照你所说的,遍历整个数组,把中间空出来的都打印出来。
    怎么从数据库中取对象你也不知道?private List list;
    private Statement sm = null;
    private ResultSet rs = null;
    private Connection ct = null;
            ct = new ConnDB().getConn();
    sm = ct.createStatement();
    rs = sm.executeQuery("select 单号 from 你要查找的表 );
    if(i =rs.next()){
                list.add(i);
    }