范围类型的概述可参见 第 8.17 节 。
表 9.54显示了范围类型的专用操作符。 表 9.55显示了多范围类型的专用操作符。 除此之外,表 9.1中所示的常用比较操作符也适用于范围类型和多范围类型。 比较操作符首先按范围下界排序,只有当它们相等时才比较上界。 多范围操作符比较每个范围直到某一个为不相等。 这通常不会导致有用的总体排序,但提供的操作符允许在范围上构造惟一索引。
表 9.54. 范围操作符
操作符 描述 例子 |
---|
第一个范围中包含第二个(范围)吗?
|
范围是否包含元素?
|
第一个范围包含在第二个(范围)中吗?
|
元素是否包含在范围内?
|
范围是否重叠,也就是说,是否有相同的元素?
|
第一个范围是否严格地在第二个(范围)的左侧?
|
第一个范围是否严格符合第二个(范围)?
|
第一个范围是否没有扩展到第二个(范围)的右侧?
|
第一个范围是否没有扩展到第二个(范围)的左侧?
|
范围是相邻的么?
|
计算范围的并集。范围必须重叠或相邻,这样的并集就是一个单一的范围(请参见
|
计算范围的交集。
|
计算范围的差异。第二个范围必须不能包含在第一个(范围)中,以使差异不是一个单一的范围。
|
表 9.55. 多范围操作符
操作符 描述 例子 |
---|
第一个多范围是否包含第二个?
|
多范围是否包含范围?
|
多范围是否包含元素?
|
范围是否包含多范围?
|
第一个多范围是否被第二个所包括?
|
多范围是否被范围所包括。
|
范围是否被多范围所包括?
|
元素是否包含在多范围内?
|
多范围是否重叠,也就是说,有任何共同的元素么?
|
多范围是否与范围重叠?
|
范围是否与多范围重叠?
|
第一个多范围是否完全在第二个左边?
|
多范围是否完全在范围左边?
|
范围是否完全的在多范围左边?
|
第一个多范围是否完全在第二个的右边?
|
多范围是否完全在范围右边?
|
范围是否完全在多范围右边。
|
第一个多范围不扩展到第二个的右边吗?
|
多范围不扩展到范围的右边吗?
|
范围不扩展到多范围的右边吗?
|
第一个多范围不扩展到第二个的左边吗?
|
多范围不扩展到范围的左边吗?
|
范围不扩展到多范围的左边吗?
|
多范围是相邻的吗?
|
多范围与范围是相邻的吗?
|
范围与多范围是相邻的吗?
|
计算多范围的并集。多范围不需要重叠或相邻。
|
计算多范围的交集。
|
计算多范围的差异。
|
当涉及一个空范围或多范围时,左部/右部/相邻操作符总是返回假;即一个空范围被认为不在任何其他范围前面或者后面。
在其他地方,空范围和多范围被视为添加标识:与空值的任何交集都是它自己。 任何减去空值的都是它自己。 空的多范围与空的范围具有完全相同的点。 每个范围都包含空范围。 每个多范围包含任意多个空范围。
范围交集和差异操作符将失败,如果结果范围需要包含两个不相交的子范围,因为这样的范围无法表示。 有用于交集和差分的单独运算符,可接受多范围参数并返回多范围,即使它们的参数不相交也不会失败。 因此,如果需要对可能不相交的范围进行交集或差异操作,你可以通过首先将范围转换为多范围来避免错误。
表 9.56 显示可用于范围类型的函数。 表 9.57显示可用于多范围类型的函数。
表 9.56. 范围函数
表 9.57. 多范围函数
lower_inc
、upper_inc
、lower_inf
、 和 upper_inf
函数对空范围(empty range)或多范围都返回假(false)。