请参阅第 8.17 节以了解范围类型的概述。
表 9.56 显示了可用于范围类型的专用运算符。 表 9.57 显示了可用于多重范围类型的专用运算符。此外,表 9.1 中显示的常规比较运算符还可用于范围和多重范围类型。比较运算符先按范围的下限排序,而仅当这些下限相等时才比较上限。多重范围运算符比较每个范围,直到有一个不相等。这通常不会产生有用的总体排序,但运算符可以构建基于范围的唯一索引。
表 9.56 范围运算符
运算符 描述 示例 |
---|
第一个范围是否包含第二个范围?
|
此范围是否包含此元素?
|
第一个范围是否包含在第二个范围内?
|
此元素是否包含在该范围内?
|
这些范围是否重叠,即它们是否具有任何公共元素?
|
第一个范围是否严格位于第二个范围的左侧?
|
第一个范围是否严格位于第二个范围的右侧?
|
第一个范围是否不延伸到第二个范围的右侧?
|
第一个范围是否不延伸到第二个范围的左侧?
|
范围是否相邻?
|
计算范围的并集。范围必须重叠或相邻,这样并集就是单个范围(但参见
|
计算范围的交集。
|
计算范围的差集。第二个范围不得包含在第一个范围中,以至于差集不是单个范围。
|
表 9.57. 多范围运算符
运算符 描述 示例 |
---|
第一个多范围是否包含第二个多范围?
|
多范围是否包含范围?
|
多范围是否包含元素?
|
范围是否包含多范围?
|
第一个多范围是否被第二个多范围包含?
|
该多范围是否包含在这个范围内?
|
该范围是否包含在这个多范围内?
|
该元素是否包含在这个多范围内?
|
这些多范围是否重叠,即,是否有任何公共元素?
|
该多范围是否与该范围重叠?
|
该范围是否与该多范围重叠?
|
第一个多范围是否严格位于第二个多范围的左侧?
|
该多范围是否严格位于该范围的左侧?
|
该范围是否严格位于该多范围的左侧?
|
第一个多范围是否严格位于第二个多范围的右侧?
|
该多范围是否严格位于该范围的右侧?
|
该范围是否严格位于该多范围的右侧?
|
第一个多重区间是否不向右延伸到第二个区间?
|
多重区间是否不向右延伸到区间?
|
区间是否不向右延伸到多重区间?
|
第一个多重区间是否不向左延伸到第二个区间?
|
多重区间是否不向左延伸到区间?
|
区间是否不向左延伸到多重区间?
|
多重区间是否相邻?
|
多重区间是否与区间相邻?
|
区间是否与多重区间相邻?
|
计算多重区间的并集。多重区间不需要重叠或相邻。
|
计算多重区间的交集。
|
计算多区间的差值。
|
当涉及到空范围或多范围时,左/右/相邻运算符总是返回假;也就是说,空范围不会被认为在任何其他范围之前或之后。
在其他地方,空范围和多范围被视为加法单位:任何与空值联合的都是它本身。减去空值的任何东西都是它本身。空多范围与空范围完全相同。每个范围都包含空范围。每个多范围都包含任意多个空范围。
如果所得范围需要包含两个不相交的子范围,则范围联合和差值运算符将失败,因为无法表示这样的范围。有单独用于联合和差值的运算符,它们采用多范围参数并返回多范围,即使它们的参数不相交也不会失败。因此,如果您需要对不相交的范围执行联合或差值操作,可以通过首先将范围强制转换为多范围来避免错误。
表 9.58 展示了可用于范围类型的函数。表 9.59 展示了可用于多范围类型的函数。
表 9.58 范围函数
表 9.59. 多范围函数
对于空范围或多重范围,lower_inc
、upper_inc
、lower_inf
和 upper_inf
函数均返回假。