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