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

相关推荐
OceanBase数据库官方博客11 小时前
被 VLDB 2027接收OceanBase 最新论文让数据库基(技术解析与实践)
数据库·人工智能·oceanbase
创邻科技11 小时前
国产图数据库刷新 LDBC 世界纪录:创邻科技 Galaxybase 在 SF100、SF300、SF1000 测试中全面领先”
数据库·科技
GreatSQL社区11 小时前
主从复制SQL线程中断——字符集砸出的坑
java·数据库·算法
XLYcmy12 小时前
AI 赋能后中文与英文数据库对比分析报告 上
数据库·ai·llm·prompt·检索·wos·cnki
这个DBA有点耶12 小时前
ELT 工具选型完整指南:从 ETL 差异分析到工程落地
数据库·架构·代码规范
IvorySQL12 小时前
PostgreSQL 日报|堆表选择性索引更新(10 月 13 日)
数据库·人工智能·postgresql·开源·区块链
张洛闻Eren13 小时前
Ansible【第一课】:Ansible介绍
运维·数据库·云原生·kubernetes·github·ansible
a59865213 小时前
Docker云手机端口不通,无法访问|六边云手机教你故障排查完整流程
docker·容器·性能优化·云手机
深圳市益普科技有限公司13 小时前
中小封装厂上 MES,为什么十个项目九个坑?
大数据·数据库·人工智能
云边云科技_云网融合13 小时前
从 POS 机到访客 Wi-Fi:零售门店安全建设的完整解法
服务器·网络·数据库