云数据库 GAUSSDB-范围类型:范围输入/输出

时间:2024-11-13 14:46:50

范围输入/输出

范围输入模式:

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

范围输出模式:

[lower-bound,upper-bound) 
empty 

()或[]指示上下界是否为排除的或者包含的。empty表示一个空范围(一个不包含点的范围)。

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

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

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

例子:

--包括3,不包括7之间的所有点。 
gaussdb=# SELECT '[3,7)'::int4range;  
 int4range 
-----------
 [3,7)
(1 row)
--既不包括3也不包括7之间的所有点。
gaussdb=# SELECT '(3,7)'::int4range;  
 int4range 
-----------
 [4,7)
(1 row)
--只包括单独一个点4。
gaussdb=# SELECT '[4,4]'::int4range;  
 int4range 
-----------
 [4,5)
(1 row)
--不包括点(并且将被标准化为 '空')。 
gaussdb=# SELECT '[4,4)'::int4range; 
 int4range 
-----------
 empty
(1 row)
support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0337.html