Skip to main content

比较函数和运算符

比较运算符

运算符表达式 & 描述示例
=operand1 = operand2
相等。
如果用 = 分隔的操作数具有相同的值,则为 TRUE。
1 = 1 → t
'1' = 1 → t
'a' = 'b' → f
(1, 0) = (1, 1) → f
('a', 'b') = ('a', 'b') → t
<>
!=
operand1 <> operand2operand1 != operand2
不相等。
如果用 <> 或 != 分隔的操作数具有不同的值,则为 TRUE。
1 <> 1 → f
'1' != 1 → f
'a' != 'b' → t
(1, 0) <> (1, 1) → t
('a', 'b') != ('a', 'b') → f
<operand1 < operand2
小于。
如果 operand1 小于 operand2 则为 TRUE。
0 < 1 → t
1 < 1 → f
<=operand1 <= operand2
小于或等于。
如果 operand1 小于或等于 operand2 则为 TRUE。
1 <= 1 → t
1 <= 0 → f
>operand1 > operand2
大于。
如果 operand1 大于 operand2,则为 TRUE。
1 > 0 → t
1 > 1 → f
>=operand1 >= operand2
大于或等于。
如果 operand1 大于或等于 operand2 则为 TRUE。
1 >= 1 → t
0 >= 1 → f

比较 Predicate

运算符表达式 & 描述示例
IS DISTINCT FROMoperand1 IS DISTINCT FROM operand2
不相等(空值被当做一个普通值)。
如果 operand1 不等于 operand2 则为 TRUE。
1 IS DISTINCT FROM NULL → t
1 IS DISTINCT FROM 1 → f
IS NOT DISTINCT FROMoperand1 IS NOT DISTINCT FROM operand2
相等(空值被当做一个普通值)。
如果 operand1 等于 operand2 则为 TRUE。
1 IS NOT DISTINCT FROM NULL → f
BETWEEN ... AND ...operand BETWEEN min AND max
在……之间(包含端点)。
如果操作数大于或等于 min,小于或等于 max,则为 TRUE。
1 BETWEEN 0 AND 1 → t
'c' BETWEEN 'a' AND 'b' → f
NOT BETWEEN ... AND ...operand NOT BETWEEN min AND max
不在……之间(包含端点)。
如果操作数小于 min,大于 max,则为 TRUE。
1 NOT BETWEEN 0 AND 1 → f
IN()operand IN (value,...)
值是否在指定的值内。
如果操作数在指定的表达式/值内,则为 TRUE。如果操作数为空值,或操作数不在包含空值的指定表达式/值中,则为 NULL。
1 IN (0,1,2,3) → t
'a' IN ('ab','b','c','d') → f
null IN (null, 3, 0.5*2, min(v1)) → NULL
99 IN (null, 3, 2) → NULL
NOT IN()operand NOT IN (value,...)
值是否不在指定的值内。
如果操作数不在指定的表达式/值内,则为 TRUE。
1 NOT IN (0,1,2,3) → f
ANY()expression operator ANY (array expression)
将数值与数值集合或数组中的元素进行比较。
右侧是一个带括号的表达式,必须生成一个数组值。使用给定的运算符对左侧表达式进行求值并与数组中的每个元素进行比较,得出的结果必须是布尔值。

如果结果为 true,则为 TRUE。如果结果不为 true(包括数组元素为零的情况),则为 FALSE。

如果数组表达式生成一个空数组,或左侧表达式生成空值(假设使用严格的比较运算符),或右侧数组包含空元素且比较结果不为 true(假设使用严格的比较运算符),则为 NULL。
5 = ANY(ARRAY[1, 3, 5, 7]) → t
SOME()expression operator SOME (array expression)
SOME 是 ANY 的同义词。
5 = SOME(ARRAY[1, 3, 5, 7]) → t
ALL()expression operator ALL (array expression)
将数值与数值集合或数组中的元素进行比较。
右侧是一个带括号的表达式,必须生成一个数组值。使用给定的运算符对左侧表达式进行求值并与数组中的每个元素进行比较,得出的结果必须是布尔值。

如果所有比较结果都为 true(包括数组元素为零的情况),则为 TRUE。如果存在任何 false 的结果,则为 FALSE。

如果数组表达式生成一个空数组,或左侧表达式生成 null(假设使用严格的比较运算符),或右侧数组包含空元素且比较结果不为 false(假设使用严格的比较运算符),则为 NULL。
5 > ALL(ARRAY[1, 3, 5, 7]) → f
IS TRUEboolean IS TRUE
判断布尔表达式是否为 true。
true IS TRUE → t
null::boolean IS TRUE → f
IS NOT TRUEboolean IS NOT TRUE
判断布尔表达式是否为 false 或 unknown。
true IS NOT TRUE → f
null::boolean IS NOT TRUE → t
IS FALSEboolean IS FALSE
判断布尔表达式是否为 false。
true IS FALSE → f
null::boolean IS FALSE → f
IS NOT FALSEboolean IS NOT FALSE
判断布尔表达式是否为 true 或 unknown。
true IS NOT FALSE → t
null::boolean IS NOT FALSE → t
IS NULLvalue IS NULL
判断值是否为 null。
1 IS NULL → f
IS NOT NULLvalue IS NOT NULL
判断值是否不为 null。
1 IS NOT NULL → t
IS UNKNOWNboolean IS UNKNOWN
判断布尔表达式是否返回未知值(通常由 null 表示)。
null IS UNKNOWN → t
false IS UNKNOWN → f
IS NOT UNKNOWNboolean IS NOT UNKNOWN
判断布尔表达式是否返回 true 或 false。
true IS NOT UNKNOWN → t
null IS NOT UNKNOWN → f