查询以检查sql server中的重叠范围?

前端之家收集整理的这篇文章主要介绍了查询以检查sql server中的重叠范围?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有我的桌子
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:   |-----|                       |----|

在所有重叠的情况下,这两个测试都是正确的:

>现有范围的开始日期始终在新范围的结束日期之前
>现有范围的结束日期是在新范围的开始日期之后

不重叠的那些不能通过该测试中的一个或另一个.

原文链接:https://www.f2er.com/mssql/84148.html

猜你在找的MsSQL相关文章