我有我的桌子
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: |-----| |----|
在所有重叠的情况下,这两个测试都是正确的:
>现有范围的开始日期始终在新范围的结束日期之前
>现有范围的结束日期是在新范围的开始日期之后
不重叠的那些不能通过该测试中的一个或另一个.