逻辑运算符 - Amazon Kinesis Data Analytics
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

逻辑运算符

逻辑运算符允许您建立条件并测试其结果。

操作符 一元/二进制 描述 运算元

NOT

U

逻辑非

布尔值

AND

B

和” 和

布尔值

B

或 DIST 或

布尔值

IS

B

逻辑断言

布尔值

不是未知的

U

否定未知比较:

<expr> IS NOT UNKNOWN

布尔值

IS NULL

U

Null 比较:

<expr> IS NULL

任何

IS NOT NULL

U

否定空比较:

<expr> IS NOT NULL

任何

=

B

平等

任何

!=

B

不平等

任何

<>

B

不平等

任何

>

B

大于

有序类型(数字、字符串、日期、时间)

>=

B

大于或等于(不小于)

ORDER BY

<

B

小于

ORDER BY

<=

B

小于或等于(不大于)

ORDER BY

BETWEEN

三元

范围对比:

col1 介于 expr1 和 expr2 之间

ORDER BY

IS DISTINCT FROM

B

区别

任何

没有区别

B

非 “或” 区别”

任何

三态布尔逻辑

SQL 布尔值有三种可能的状态,而不是通常的两种状态:TRUE、FALSE 和 UNKNOWN,最后一个等同于布尔值 NULL。TRUE 和 FALSE 操作数通常根据正常的二态布尔逻辑起作用,但是在将它们与 UNKNOWN 操作数配对时适用其他规则,如下表所示。

注意

UNKOWN 代表 “可能是真的,也许是错误的”,或者换句话说,“不一定是真的,也不是绝对是错误的”。这种理解可能有助于你阐明为什么表中的某些表达式会像它们一样求值。

否定(不是)
运算 结果

TRUE”

FALSE

非 FALSE

TRUE

非 UNKNE

UNKNOWN

连词(和)
运算 结果

TRUE

TRUE

TRUE 和 FAL

FALSE

TRUE” 和 “

UNKNOWN

FALSE 和 TR

FALSE

FALSE 和 FAL

FALSE

FALSE, NK

FALSE

UNKNKNOWN

UNKNOWN

UNKNKNOWN

FALSE

未知和未知

UNKNOWN

分离(OR)
运算 结果

TRUE

TRUE

TRUE 或 FAL

TRUE

TRUE 或 UNK

TRUE

FALSE 或 TR

TRUE

FALSE 或 FAL

FALSE

FALSE 或 UNK

UNKNOWN

UNKNKNOWN

TRUE

UNKNOWN 或

UNKNOWN

未知或未知

UNKNOWN

断言 (IS)
运算 结果

TRUE”

TRUE

TRUE BE,

FALSE

TRUE” 或 “

FALSE

FALSE BE,

FALSE

FALSE BE,

TRUE

FALSE” 为空

FALSE

UNKNKNOWN

FALSE

UNKNKNOWN

FALSE

未知是未知

TRUE

不是未知的
运算 结果

TRUE 不是未知的

TRUE

FALSE 不是未知数

TRUE

未知不是未知

FALSE

IS NOT UNKNOWN 本身就是一个特殊的运算符。表达式 “x 不是未知” 等同于 “(x 是真的)或(x 是假的)”,而不是 “x 是(不是未知)”。因此,在上表中替换:

x 运算 结果 在 “(x 为真)或(x 为假)” 中替换 x 的结果

TRUE

TRUE 不是未知的

TRUE

变成

“(真是真)或(真是假)” — 因此是真的

FALSE

FALSE 不是未知数

TRUE

变成

“(假是真)或(假是假)” — 因此是真的

UNKNOWN

未知不是未知

FALSE

变成

“(未知是真的)或(未知是假的)” — 因此是错误的,

因为未知既不是真的,也不是假的

由于 IS NOT UNKNOWN 是一个特殊运算符,因此上面的运算不能围绕 IS 这个词传递:

运算 结果

非 UNKNKNOWN

FALSE

非 UNKNKNOWN

FALSE

不是未知就是未知

TRUE

为空, 非 Null
运算 结果

UNKNKNOWN

TRUE

未知不为空

FALSE

NULL 为空

TRUE

NULL 不是 NULL

FALSE

不同于且与之没有区别
运算 结果

未知与真实截然不同

TRUE

未知与假不同

TRUE

未知与未知不同

FALSE

未知与真实没有区别

FALSE

未知与假没有区别

FALSE

未知与未知没有区别

TRUE

通常,“x IS DISTINCT FROM y”类似于“x <> y”,在 x 或 y(而非二者)为 NULL 时也为 true 的情况除外。DISTINCT FROM 与相同值相反,后者的通常含义是值(真、假或未知)与自身相同,并且与其他所有值不同。IS 和 IS NOT 运算符以一种特殊的方式处理 UNKOWN,因为它代表 “可能是真的,也许是假的”。

其他逻辑运算符

对于所有其他运算符,传递 NULL 或 UNKNOWN 操作数将导致结果为 UNKNOWN(与 NULL 相同)。

示例
运算 结果

TRUE 并强制转换(空值为布尔值)

UNKNOWN

FALSE 并强制转换(空值为布尔值)

FALSE

1 > 2

FALSE

1 < 2

TRUE

'foo' = 'bar'

FALSE

'foo' <> 'bar'

TRUE

'foo' <= 'bar'

FALSE

'foo' <= 'bar'

TRUE

介于 1 和 5 之间的 3

TRUE

介于 3 和 5 之间的 1

FALSE

3 和 5 之间的 3 和 5

TRUE

5 介于 3 和 5 之间

TRUE

1 不同于 1.0

FALSE

CAST(NULL 作为整数)与强制转换(NULL 作为整数)没有区别

TRUE