比较函数和运算符
比较运算符
运算符 | 表达式 & 描述 | 示例 |
---|---|---|
= | operand1 = operand2 相等。 如果用 = 分隔的操作数具有相同的值,则为 TRUE。 | 1 = 1 → t '1' = 1 → t 'a' = 'b' → f (1, 0) = (1, 1) → f ('a', 'b') = ('a', 'b') → t |
<> != | operand1 <> operand2 或 operand1 != 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 FROM | operand1 IS DISTINCT FROM operand2 不相等(空值被当做一个普通值)。 如果 operand1 不等于 operand2 则为 TRUE。 | 1 IS DISTINCT FROM NULL → t 1 IS DISTINCT FROM 1 → f |
IS NOT DISTINCT FROM | operand1 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 TRUE | boolean IS TRUE 判断布尔表达式是否为 true。 | true IS TRUE → t null::boolean IS TRUE → f |
IS NOT TRUE | boolean IS NOT TRUE 判断布尔表达式是否为 false 或 unknown。 | true IS NOT TRUE → f null::boolean IS NOT TRUE → t |
IS FALSE | boolean IS FALSE 判断布尔表达式是否为 false。 | true IS FALSE → f null::boolean IS FALSE → f |
IS NOT FALSE | boolean IS NOT FALSE 判断布尔表达式是否为 true 或 unknown。 | true IS NOT FALSE → t null::boolean IS NOT FALSE → t |
IS NULL | value IS NULL 判断值是否为 null。 | 1 IS NULL → f |
IS NOT NULL | value IS NOT NULL 判断值是否不为 null。 | 1 IS NOT NULL → t |
IS UNKNOWN | boolean IS UNKNOWN 判断布尔表达式是否返回未知值(通常由 null 表示)。 | null IS UNKNOWN → t false IS UNKNOWN → f |
IS NOT UNKNOWN | boolean IS NOT UNKNOWN 判断布尔表达式是否返回 true 或 false。 | true IS NOT UNKNOWN → t null IS NOT UNKNOWN → f |