Kun*_*esh 6 sql sql-server sql-server-2008
我有我的桌子
From_Range ToRange
1 999
9000 10000
2000 5000
Run Code Online (Sandbox Code Playgroud)
当我尝试插入范围值1000 - 3000时,它应该失败,因为这个新范围内的某些值落在现有范围2000 - 5000之间.如何检查输入范围是否在现有范围内?
Chr*_*s J 21
找到重叠的最简单方法是这样的:
IF EXISTS (SELECT 1 FROM table WHERE @myValueLo <= ExistingRangeEnd AND @myValueHi >= ExistingRangeStart)
-- Overlaps
ELSE
-- Doesn't overlap
Run Code Online (Sandbox Code Playgroud)
如果您将上面的条件与下图中的每个条形图进行比较,则可以显示此方法:
Existing range: |-------------------|
Overlaps: |-------------| |------------|
|----------------------------------|
|-------------|
Not overlaps: |-----| |----|
Run Code Online (Sandbox Code Playgroud)
在所有重叠的情况下,这两个测试都是正确的:
那些不重叠的那个不能通过这个测试中的一个或另一个.
| 归档时间: |
|
| 查看次数: |
6216 次 |
| 最近记录: |