如图,num1 和 num2构成一个区间,现在要传入一个区间去比较库里面不存在的数据,这个要怎么写好?比如:第一行的80000011~80000094,而我传入的是80000011~80000100,差异是80000095~800001000,但是其他行可能存在有80000096~80000098,这时差异就是80000095~80000095和80000099~80000100
------解决方案--------------------
又稍稍调整了下,你拿去你的环境执行,有问题的话再说
语句中的v_start 和v_end 替换为你的起止参数
select num1,num2 from
(
select lpad(to_number(lag(num2,1,to_number(v_start)-1)over(order by num1))+1,8,'0') num1,
lpad(to_number(num1)-1,8,'0') num2
from
(select num1,num2
from T
where num1<=v_end and num2>=v_start
union all
select lpad(to_number(v_end)+1,8,'0'),null from dual
)
)where num1<=num2
order by num1