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

时间:2024-11-02 18:52:56

范围输入/输出

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

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

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

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

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

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

例子:

-- 包括 3,不包括 7,并且包括 3 和 7 之间的所有点 
SELECT '[3,7)'::int4range;  
-- 既不包括 3 也不包括 7,但是包括之间的所有点 
SELECT '(3,7)'::int4range;  
-- 只包括单独一个点 4 
SELECT '[4,4]'::int4range;  
-- 不包括点(并且将被标准化为 '空') 
SELECT '[4,4)'::int4range; 
support.huaweicloud.com/centralized-devg-v2-gaussdb/devg_03_0373.html