【GaussDB】GaussDB逻辑操作符入门指南

一、逻辑操作符介绍

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(否定一个未知状态仍是未知)

重要说明

  1. 交换特性:
    • AND和OR操作符具有交换性,即:

a AND b≡b AND a

a OR b≡b OR a

  1. 不支持XML类型:
    • 逻辑操作符不能直接用于XML类型的数据。
  2. NULL的特殊处理:
    • 在条件查询中,WHERE col=NULL是错误的写法!
    • 正确方式是使用IS NULL或IS NOT NULL。

实际应用示例

sql 复制代码
--查询年龄大于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显式处理。

相关推荐
HalvmånEver2 小时前
MySQL表的查询(二)
linux·数据库·学习·mysql
snow@li2 小时前
数据库-Redis:常用语法 / Redis 核心知识技能梳理
数据库·redis·缓存
wangqiaowq2 小时前
OEE 是 Overall Equipment Effectiveness 的缩写,中文意为设备综合效率
数据库
2301_816660212 小时前
如何在 Telegram Bot 中正确发送 HTML 格式的用户列表消息
jvm·数据库·python
2401_898717662 小时前
CSS如何使得响应式的侧边抽屉附带遮罩渐暗效果
jvm·数据库·python
weixin_458580122 小时前
如何在网页中完整展示数组中所有对象的全部属性
jvm·数据库·python
木易 士心2 小时前
云数据库 Clouder 认证:SQL 基础开发与应用题型分析
数据库·后端·sql·oracle
2403_883261092 小时前
PHP源码能否在Chromebook上运行_ChromeOS硬件限制说明【解答】
jvm·数据库·python
djjdjdjdjjdj2 小时前
golang如何编写DNS查询工具_golang DNS查询工具编写大全
jvm·数据库·python