【GaussDB】GaussDB逻辑操作符入门指南
GaussDB逻辑操作符详解:支持AND、OR、NOT三种操作符,遵循三值逻辑(TRUE/FALSE/NULL)。优先级为NOT>AND>OR,NULL表示未知状态而非FALSE。AND需全真为真,OR一真即真,NOT对NULL仍返回NULL。特别注意NULL的特殊处理,查询时应使用IS NULL而非=NULL。实际应用中需注意NULL对逻辑判断的影响,建议使用COALESCE()或I
一、逻辑操作符介绍
GaussDB支持三种常用的逻辑操作符:
- AND(与)
- OR(或)
- NOT(非)
这些操作符用于组合布尔表达式,其运算结果可以是三个值之一:
- TRUE
- FALSE
- NULL(表示“未知”或“不确定”)
注意:NULL在逻辑运算中不等于FALSE,它代表的是信息缺失或未知状态。
运算优先级
逻辑操作符的优先级从高到低为:
NOT>AND>OR
例如:
A OR b AND c
等价于:
A OR (b AND c)
运算规则表(三值逻辑)
|
a |
b |
a AND b |
a OR b |
NOT a |
|
TRUE |
TRUE |
TRUE |
TRUE |
FALSE |
|
TRUE |
FALSE |
FALSE |
TRUE |
FALSE |
|
TRUE |
NULL |
NULL |
TRUE |
FALSE |
|
FALSE |
FALSE |
FALSE |
FALSE |
TRUE |
|
FALSE |
NULL |
FALSE |
NULL |
TRUE |
|
NULL |
NULL |
NULL |
NULL |
NULL |
二、核心规则
AND规则
- 只有当两个操作数都为TRUE时,结果才为TRUE。
- 若任一操作数为FALSE,结果为FALSE。
- 若任一操作数为NULL,结果为NULL(因为无法确定整体真假)。
示例:
TRUE AND NULL→NULL(“真且未知”=未知)
OR规则
- 只要有一个操作数为TRUE,结果就为TRUE。
- 若两个都为FALSE,结果为FALSE。
- 若任一为NULL,结果取决于另一个:
- TRUE OR NULL→TRUE(“真或未知”=真)
- FALSE OR NULL→NULL(“假或未知”=未知)
NOT规则
- NOT TRUE→FALSE
- NOT FALSE→TRUE
- NOT NULL→NULL(否定一个未知状态仍是未知)
重要说明
- 交换特性:
- AND和OR操作符具有交换性,即:
a AND b≡b AND a
a OR b≡b OR a
- 不支持XML类型:
- 逻辑操作符不能直接用于XML类型的数据。
- NULL的特殊处理:
- 在条件查询中,WHERE col=NULL是错误的写法!
- 正确方式是使用IS NULL或IS NOT NULL。
实际应用示例
--查询年龄大于20且不是学生的记录
SELECT * FROM users
WHERE age>20 AND is_student IS FALSE;
--查询年龄小于18或职业为空的用户
SELECT * FROM users
WHERE age<18 OR job IS NULL;
三、总结
|
特性 |
说明 |
|
操作符 |
AND,OR,NOT |
|
返回值 |
TRUE,FALSE,NULL |
|
优先级 |
NOT>AND>OR |
|
NULL含义 |
表示“未知”,非“假” |
|
关键规则 |
AND要求全真才真;OR只要一真即真;NOT否定已知值,未知仍未知 |
提示:在编写复杂查询时,一定要注意NULL对逻辑判断的影响,必要的时候使用COALESCE()或ISNULL显式处理。
更多推荐



所有评论(0)