范围值的输入必须遵循下列模式之一:
(lower-bound,upper-bound)
(lower-bound,upper-bound]
[lower-bound,upper-bound)
[lower-bound,upper-bound]
empty
圆括号或方括号指示上下界是否为被排除或被包含的。empty表示空范围。
lower-bound可以是作为subtype的合法输入的一个字符串,或者是空表示没有下界。同样,upper-bound可以是作为subtype的合法输入的一个字符串,或者是空表示没有上界。
l 每个界限值可以使用"(双引号)字符引用。如果界限值包含圆括号、方括号、逗号、双引号或反斜线时,必须使用双引号。否则那些字符认定为范围语法,而非界限值内容。
l 如需把双引号或反斜线放在被引用的界限值中,则需在前面添加使用一个反斜线。
l 在双引号引用的界限值中的一对双引号,表示为双引号字符,这与SQL字符串中的单引号规则类似。
l 用户可以避免引用,并且使用反斜线转义来保护所有数据字符,否则它们会被当做返回语法的一部分。
l 如需写一个空字符串的界限值,则可以写成""。什么都不写,默认表示一个无限界限。
l 范围值前后允许有空格,但是圆括号或方括号之间的任何空格,认定为上下界值的一部分。
示例
-- 包括 3,不包括 7,并且包括 3 和 7 之间的所有点
gbase=# SELECT '[3,7)'::int4range;
[3,7)
-- 既不包括 3 也不包括 7,但是包括之间的所有点
gbase=# SELECT '(3,7)'::int4range;
[4,7)
-- 只包括单独一个点 4
gbase=# SELECT '[4,4]'::int4range;
[4,5)
-- 不包括点(并且将被标准化为 '空')
gbase=# SELECT '[4,4)'::int4range;
empty