数据仓库服务 GAUSSDB(DWS)-范围类型:范围的输入/输出

时间:2024-04-18 16:25:06

范围的输入/输出

范围值的输入必须遵循下列模式之一:

     (lower-bound,upper-bound)
     (lower-bound,upper-bound]
     [lower-bound,upper-bound)
     [lower-bound,upper-bound]
     empty

圆括号或方括号指示上下界是否为排除的或者包含的。最后一个模式是empty,它表示一个空范围(一个不包含点的范围)。

lower-bound可以作为子类型的合法输入的一个字符串,或者是空,表示没有下界。同样,upper-bound可以是作为子类型的合法输入的一个字符串,或者是空,表示没有上界。

每个界限值可以使用双引号引用。如果界限值包含圆括号、方括号、逗号、双引号或反斜线时,则必须使用双引号引用,否则这些符号会被认作范围语法的一部分。要想把双引号或反斜线放在被引用的界限值中,需要在双引号或反斜线前面加一个反斜线(在双引号引用的界限值中的一对双引号表示一个双引号字符,这与SQL字符串中的单引号规则类似)。此外,可以避免引用并且使用反斜线转义来保护所有数据字符,否则它们会被当做返回语法的一部分。什么都不写则表示一个无限界限,因此,要表示空字符串的界限值,可以写成""。

范围值前后允许有空格,但是圆括号或方括号之间的任何空格会被当做上下界值的一部分(取决于元素类型,它可能是有意义的也可能是无意义的)。

示例

查询包括3,不包括7,并且包括3和7之间的所有点:

SELECT '[3,7)'::int4range;
 int4range
-----------
 [3,7)
(1 row)

查询既不包括3也不包括 7,但是包括之间的所有点:

SELECT '(3,7)'::int4range;
 int4range
-----------
 [4,7)
(1 row)

查询只包括单独一个点4:

SELECT '[4,4]'::int4range;
 int4range
-----------
 [4,5)
(1 row)

查询不包括点(并且将被标准化为 '空'):

SELECT '[4,4)'::int4range;
 int4range
-----------
 empty
(1 row)
support.huaweicloud.com/sqlreference-830-dws/dws_06_0370.html