想了一下,估计是没法查啊!!!因为你的数据库里根本就没有未使用过的单号的数据啊~ 如果说你有一张是所有单据的表~可以用比较的方法来进行查询(Not IN 单号) 你说的这个用车需可以写出来,单一查询貌似不行啊~也许是我实力不行啊,个人意见!!!
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
在程序中判断下,如果使用过,flag=1。否则flag=0最后查找的时候,只需要查找flag=0的记录就行了。
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++;
}
如果说你有一张是所有单据的表~可以用比较的方法来进行查询(Not IN 单号)
你说的这个用车需可以写出来,单一查询貌似不行啊~也许是我实力不行啊,个人意见!!!
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
for(int i=10001;i<=19999;i++){
if(!list.contains(i)){ //list为数据库中的所有单号集合
xxx//把没有在里面的数字存到一个集合中,再处理成"00xxxxx"的格式
}
}
我没试过,因为我没办法查找所有的单号,我只能在数据库中查找到使用过的单号.你能告诉我怎么把一个范围内的单号封装成一个list,谢谢
然后按照你所说的,遍历整个数组,把中间空出来的都打印出来。
怎么从数据库中取对象你也不知道?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);
}