A表存储的为Sr范围
ID SrFrom SrTo
1 1 3
2 4 8
3 9 11我现在想查询这些Sr: 2、10 ,结果应该是A表的第一条和第三条记录满足条件。
想查询这些Sr: 2、6、10 ,结果应该是A表的所有三条记录满足条件。
这些SQL语句怎么写啊?
是Select * from A where ??? in (2,6,10) 还是怎么写啊?急!!
ID SrFrom SrTo
1 1 3
2 4 8
3 9 11我现在想查询这些Sr: 2、10 ,结果应该是A表的第一条和第三条记录满足条件。
想查询这些Sr: 2、6、10 ,结果应该是A表的所有三条记录满足条件。
这些SQL语句怎么写啊?
是Select * from A where ??? in (2,6,10) 还是怎么写啊?急!!
SELECT 1 ID,1 SrFrom,3 SrTo FROM dual UNION ALL
SELECT 2, 4, 8 FROM dual UNION ALL
SELECT 3, 9, 11 FROM dual
),
tb AS(SELECT '2,6,10' id FROM dual --这里是你的'2,6,10'
),
b AS(
select substr(','||id||',',instr(','||id||',',',',1,level)+1,
instr(','||id||',',',',1,level+1)-instr(','||id||',',',',1,level)-1) sr
from tb
connect by
level <= length(','||id||',') - length(replace(','||id||',', ',', ''))-1)
SELECT a.* FROM a,b WHERE b.sr BETWEEN a.SrFrom AND a.SrTo
ID SRFROM SRTO
-------------------
1 1 3
2 4 8
3 9 11