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

时间:2025-02-12 15:05:53

范围输入/输出

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

(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,并且包括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/centralized-devg-v8-gaussdb/gaussdb-42-0345.html