Presto 0.100 Documentation

5.2. 比较函数和运算符

5.2. 比较函数和运算符

比较运算符

运算符 描述
< 小于
> 大于
<= 小于等于
>= 大于等于
= 等于
<> 不等
!= 不等(不标准的用法,但是很流行这样使用)

范围运算符: BETWEEN

BETWEEN 运算符检测一个值是否在指定的范围。 使用语法 value BETWEEN min AND max:

SELECT 3 BETWEEN 2 AND 6;

上面的语句和下面的语句等效:

SELECT 3 >= 2 AND 3 <= 6;

要检测一个值不在指定的范围, 使用 NOT BETWEEN:

SELECT 3 NOT BETWEEN 2 AND 6;

上面的语句和下面的语句等效:

SELECT 3 < 2 OR 3 > 6;

如果在 BETWEENNOT BETWEEN 语句中出现NULL, 将导致结果为NULL:

SELECT NULL BETWEEN 2 AND 4; => null

SELECT 2 BETWEEN NULL AND 6; => null

BETWEENNOT BETWEEN 运算符 也可以用于字符串参数:

SELECT 'Paul' BETWEEN 'John' AND 'Ringo'; => true

使用 BETWEENNOT BETWEEN 时, value、min和max参数的类型必须相同。 例如,如果你问John是否在2.3到35.2之间,Presto将会报错。

空和非空

IS NULLIS NOT NULL 运算符检测一个值是否为空(未定义)。 这两个运算符适用于所有数据类型。

IS NULL 语句中使用 NULL 进行对比 ,结果为true:

select NULL IS NULL; => true

但使用其他常量进行对比,结果都是false:

SELECT 3.0 IS NULL; => false

IS DISTINCT FROM 和 IS NOT DISTINCT FROM

在SQL中 NULL 表示一个未知的值, 因此,任何比较相关的语句含有 NULL ,结果都是 NULL。 而 IS DISTINCT FROMIS NOT DISTINCT FROM 运算符将 NULL 视为一个已知的值, 这两个运算符保证即使输入中有 NULL , 结果也是true或false。

SELECT NULL IS DISTINCT FROM NULL; => false

SELECT NULL IS NOT DISTINCT FROM NULL; => true

上述示例中, NULL 值与 NULL 没有区别。 当你的比较操作中可能包含 NULL 的值时, 使用这两个运算符可以保证结果只能是 TRUEFALSE

下表格展示了 NULLIS DISTINCT FROMIS NOT DISTINCT FROM 中是怎样计算的:

a b a = a 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

最大和最小

这两个函数不是SQL标准函数,他们是常用的扩展。 与Presto的其他数函数相似,任何一个参数为空,则返回空。 但是在某些其他数据库中,例如PostgreSQL, 只有全部参数都为空时,才返回空。

支持类型: DOUBLE, BIGINT, VARCHAR, TIMESTAMP, TIMESTAMP WITH TIME ZONE, DATE

greatest(value1, value2) → [与输入相同]

返回提供的最大值。

least(value1, value2) → [与输入相同]

返回提供的最小值。