比较函数和运算符

比较运算判断参数的大小关系,可以应用于任何可比较类型,如int、bigint、double和text等。

比较运算符

比较运算符用于比较两个参数值的大小关系。当用比较运算符比较两个值时,如果逻辑成立,则返回true;否则返回false。

运算符 含义
< 小于
> 大于
<= 小于或等于
>= 大于或等于
= 等于
<> 不等于
!= 不等于

范围运算符 BETWEEN

BETWEEN用于判断一个参数的值是否在另外两个参数之间,范围为闭区间。

  • 如果逻辑成立,则返回true;否则返回false。

    示例:SELECT 3 BETWEEN 2 AND 6;逻辑成立,返回true。

    以上样例等同于SELECT 3 >= 2 AND 3 <= 6;

  • BETWEEN可以跟在not之后,用于相反逻辑的判断。

    示例:SELECT 3 NOT BETWEEN 2 AND 6;,逻辑不成立,返回false。

    以上样例等同于SELECT 3 < 2 OR 3 > 6;

  • 如果三个参数中任何一个包含Null,则返回的结果为Null。

IS NULL 和 IS NOT NULL

该运算符用于判断参数是否是Null值。

IS DISTINCT FROM 和 IS NOT DISTINCT FROM

类似于相等和不等判断,区别在于该运算符能够判断存在NULL值的情况。

样例:

SELECT NULL IS DISTINCT FROM NULL; -- false
SELECT NULL IS NOT DISTINCT FROM NULL; -- true

如下表所示,DISTINCT运算符可以判断多种情况下的参数大小关系。

a b a = b a <> b a DISTINCT b a NOT DISTINCT b
1 1 TRUE FALSE FALSE TRUE
1 2 FALSE TRUE TRUE FALSE
1 NULL NULL NULL TRUE FALSE
NULL NULL NULL NULL FALSE TRUE

GREATEST 和 LEAST

用于获取多列中的最大值或者最小值。

示例:

select greatest(1,2,3) ; -- 返回3

比较判断:ALL、ANY 和 SOME

比较判断用于判断参数是否满足条件。

  • ALL用于判断参数是否满足所有条件。如果逻辑成立,则返回true,否则返回false。
  • ANY用于判断参数是否满足条件之一。如果逻辑成立,则返回true,否则返回false。
  • SOME和ANY一样,用于判断参数是否满足条件之一。
  • ALL、ANY 和 SOME必须紧跟在比较运算符之后。

如下表所示,ALL和ANY支持多种情况下的比较判断。

表达式 含义
A = ALL (…) A等于所有的值时,结果才是true。
A <> ALL (…) A不等于所有的值时,结果才是true。
A < ALL (…) A小于所有的值时,结果才是true。
A = ANY (…) A等于任何一个值时,结果就为true,等同于 A IN (…)。
A <> ANY (…) A不等于任何一个值时,结果为true。
A < ANY (…) A小于其中最大值时,结果为true。
示例:
SELECT 'hello' = ANY (VALUES 'hello', 'world'); -- true
SELECT 21 < ALL (VALUES 19, 20, 21); -- false
SELECT 42 >= SOME (SELECT 41 UNION ALL SELECT 42 UNION ALL SELECT 43); -- true