比较函数和运算符
比较操作
操作 |
描述 |
---|---|
< |
小于 |
> |
大于 |
<= |
小于等于 |
>= |
大于等于 |
= |
等于 |
<> |
不等于 |
!= |
不等于 |
- 范围比较:between
between适用于值在一个特定的范围内,如:value BETWEEN min AND max
Not between适用于值不在某个特定范围内。
null值不能出现在between操作中,如下两种执行结果都是Null:
SELECT NULL BETWEEN 2 AND 4; -- null SELECT 2 BETWEEN NULL AND 6; -- null
HetuEngine中,value,min和max 三个参数在between和not between中必须是同一数据类型。
错误示例:'John’ between 2.3 and 35.2
BETWEEN等价写法示例:
SELECT 3 BETWEEN 2 AND 6; -- true SELECT 3 >= 2 AND 3 <= 6; -- true
NOT BETWEEN等价写法示例:
SELECT 3 NOT BETWEEN 2 AND 6; -- false SELECT 3 < 2 OR 3 > 6; -- false
- IS NULL和IS NOT NULL
SELECT 3.0 IS NULL; -- false
- IS DISTINCT FROM和IS NOT DISTINCT FROM
特有用法。在HetuEngine的SQL中,NULL代表未知值,所有与NULL有关的比较,产生的结果也是NULL。IS DISTINCT FROM和IS NOT DISTINCT FROM可以把null值当成某个已知值,从而使结果返回true或者false(即使表达式中有Null值)。
示例:
--建表 create table dis_tab(col int); --插入数据 insert into dis_tab values (2),(3),(5),(null); --查询 select col from dis_tab where col is distinct from null; col ---- 2 3 5 (3 rows)
如以下真值表,演示了IS DISTINCT FROM和IS NOT DISTINCT FROM对正常数据和NULL值的处理结果:
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
- 批量比较判断:ALL,ANY和SOME
量词ALL,ANY和SOME可以参考以下方式,结合比较操作符一起使用:
expression operator quantifier ( subquery )
以下是一些量词和比较运算符组合的含义,ANY和SOME具有相同的含义,表中的ANY换为SOME也同样:
表达式
含义
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