有关范围类型的概述,请参阅第 8.17 节。
表 9.58 显示了可用于范围类型的专用运算符。表 9.59 显示了可用于多范围类型的专用运算符。此外,表 9.1 中显示的常用比较运算符也可用于范围和多范围类型。比较运算符首先按范围的下界排序,只有当下界相等时,它们才比较上界。多范围运算符逐个比较范围,直到有一个不相等。这通常不会产生有用的整体排序,但运算符的存在允许在范围上构造唯一索引。
表 9.58. 范围运算符
运算符 描述 示例 |
---|
第一个范围是否包含第二个范围?
|
范围是否包含该元素?
|
第一个范围是否被第二个范围包含?
|
该元素是否包含在范围内?
|
两个范围是否重叠,即是否有任何元素是共同的?
|
第一个范围是否严格位于第二个范围的左侧?
|
第一个范围是否严格位于第二个范围的右侧?
|
第一个范围是否不延伸到第二个范围的右侧?
|
第一个范围是否不延伸到第二个范围的左侧?
|
两个范围是否相邻?
|
计算两个范围的并集。范围必须重叠或相邻,以便并集是一个单一的范围(但请参阅
|
计算两个范围的交集。
|
计算两个范围的差集。第二个范围不得被包含在第一个范围中,以免差集不是一个单一范围。
|
表 9.59. 多范围运算符
运算符 描述 示例 |
---|
第一个多范围是否包含第二个多范围?
|
多范围是否包含该范围?
|
多范围是否包含该元素?
|
范围是否包含该多范围?
|
第一个多范围是否被第二个多范围包含?
|
多范围是否被范围包含?
|
范围是否被多范围包含?
|
该元素是否被多范围包含?
|
两个多范围是否重叠,即是否有任何元素是共同的?
|
多范围是否与该范围重叠?
|
范围是否与多范围重叠?
|
第一个多范围是否严格位于第二个多范围的左侧?
|
多范围是否严格位于范围的左侧?
|
范围是否严格位于多范围的左侧?
|
第一个多范围是否严格位于第二个多范围的右侧?
|
多范围是否严格位于范围的右侧?
|
范围是否严格位于多范围的右侧?
|
第一个多范围是否不延伸到第二个多范围的右侧?
|
多范围是否不延伸到范围的右侧?
|
范围是否不延伸到多范围的右侧?
|
第一个多范围是否不延伸到第二个多范围的左侧?
|
多范围是否不延伸到范围的左侧?
|
范围是否不延伸到多范围的左侧?
|
两个多范围是否相邻?
|
多范围是否与范围相邻?
|
范围是否与多范围相邻?
|
计算两个多范围的并集。多范围不必重叠或相邻。
|
计算两个多范围的交集。
|
计算两个多范围的差集。
|
左侧/右侧/相邻运算符在涉及空范围或空多范围时总是返回 false;也就是说,一个空范围不被认为在任何其他范围之前或之后。
在其他情况下,空范围和空多范围被视为加法单位元:任何值与空值进行并集运算后仍为自身。任何值减去空值仍为自身。一个空的多范围与一个空范围包含相同的点。每个范围都包含空范围。每个多范围都包含任意数量的空范围。
范围并集和差集运算符如果导致结果范围需要包含两个不相交的子范围,则会失败,因为这样的范围无法表示。有单独的运算符用于并集和差集,它们接受多范围参数并返回多范围,即使它们的参数不相交也不会失败。因此,如果需要对可能不相交的范围执行并集或差集运算,可以通过先将范围转换为多范围来避免错误。
表 9.60 显示了可用于范围类型的函数。表 9.61 显示了可用于多范围类型的函数。
表 9.60. 范围函数
表 9.61. 多范围函数
lower_inc
、upper_inc
、lower_inf
和 upper_inf
函数对空范围或空多范围都返回 false。
如果您在文档中发现任何不正确之处、与您在使用特定功能时的经验不符之处,或者需要进一步澄清的内容,请使用此表单报告文档问题。