【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显式处理。

相关推荐
itfallrain13 小时前
Spring 构造器循环依赖排查:@RequiredArgsConstructor + @Lazy 到底有没有生效
数据库·python·spring
Database_Cool_14 小时前
AnalyticDB MySQL vs StarRocks/ByteHouse:云数仓选型指南——全托管 vs 自建方案
数据库·数据仓库·mysql·阿里云
时代文章14 小时前
UCX 官方文档和 InfiniBand 架构知识整理
网络·ai·性能优化
Omics Pro14 小时前
「自兹以往」动物肠道微生物组
数据库·人工智能·机器学习·语言模型·自然语言处理
zzz_236814 小时前
【Redis】分布式锁完整演进
数据库·redis·分布式
mN9B2uk1715 小时前
数据库的约束简介
java·数据库·sql
计算机安禾15 小时前
【数据库系统原理】第4篇:关系数据结构的形式化定义:域、笛卡尔积与关系模式
数据结构·数据库·算法
Henry-SAP15 小时前
SAP(ERP) BOM变更实时同步MRP方案
数据库·云原生
AI人工智能+电脑小能手15 小时前
【大白话说Java面试题 第99题】【Mysql篇】第29题:如何选择合适的分布式主键方案?
java·数据库·分布式·mysql·面试
倔强的石头_16 小时前
kingbase备份与恢复实战(七)—— 恢复演练与验收:从“能恢复”到“可交付预案”
数据库