我有桌子
From_Range ToRange 1 999 9000 10000 2000 5000
当我尝试插入范围值1000-3000时,它将失败,因为此新范围内的某些值落在现有范围2000-5000之间。如何检查输入范围是否落在现有范围内?
找到重叠的最简单方法是这样的:
IF EXISTS (SELECT 1 FROM table WHERE @myValueLo <= ExistingRangeEnd AND @myValueHi >= ExistingRangeStart) -- Overlaps ELSE -- Doesn't overlap
如果将上面的条件与下图中的每个条形进行比较,这可以显示为有效:
Existing range: |-------------------| Overlaps: |-------------| |------------| |----------------------------------| |-------------| Not overlaps: |-----| |----|
在所有重叠的情况下,这两个测试都是正确的:
那些不重叠的测试将通过一项或多项测试。