比较函数和运算符
比较运算判断参数的大小关系,可以应用于任何可比较类型,如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