hetu-core/hetu-docs/zh/functions/logical.md

56 lines
1.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 逻辑运算符
## 逻辑运算符
| 运算符| 说明| 示例|
|:----------|:----------|:----------|
| `AND`| 如果两个值都为真,则为真。| a AND b|
| `OR`| 如果其中一个值为真,则为真。| a OR b|
| `NOT`| 如果值为假,则为真。| NOT a|
## NULL对逻辑运算符的影响
如果表达式的一侧或两侧为`NULL`,则`AND`比较的结果可能是`NULL`。如果`AND`运算符至少一侧为`FALSE`,则表达式的计算结果为`FALSE`
SELECT CAST(null AS boolean) AND true; -- null
SELECT CAST(null AS boolean) AND false; -- false
SELECT CAST(null AS boolean) AND CAST(null AS boolean); -- null
如果表达式的一侧或两侧为`NULL`,则`OR`比较的结果可能是`NULL`。如果`OR`运算符至少一侧为`TRUE`,则表达式的计算结果为`TRUE`
SELECT CAST(null AS boolean) OR CAST(null AS boolean); -- null
SELECT CAST(null AS boolean) OR false; -- null
SELECT CAST(null AS boolean) OR true; -- true
下面的真值表展示了如何处理`AND`和`OR`中的`NULL`
| a| b| a AND b| a OR b|
|:----------|:----------|:----------|:----------|
| `TRUE`| `TRUE`| `TRUE`| `TRUE`|
| `TRUE`| `FALSE`| `FALSE`| `TRUE`|
| `TRUE`| `NULL`| `NULL`| `TRUE`|
| `FALSE`| `TRUE`| `FALSE`| `TRUE`|
| `FALSE`| `FALSE`| `FALSE`| `FALSE`|
| `FALSE`| `NULL`| `FALSE`| `NULL`|
| `NULL`| `TRUE`| `NULL`| `TRUE`|
| `NULL`| `FALSE`| `FALSE`| `NULL`|
| `NULL`| `NULL`| `NULL`| `NULL`|
`NULL`的逻辑补运算结果为`NULL`,如以下示例所示:
SELECT NOT CAST(null AS boolean); -- null
下面的真值表展示了如何处理`NOT`中的`NULL`
| a| NOT a|
|:----------|:----------|
| `TRUE`| `FALSE`|
| `FALSE`| `TRUE`|
| `NULL`| `NULL`|