一、逻辑操作符介绍

GaussDB支持三种常用的逻辑操作符:

  • AND(与)
  • OR(或)
  • NOT(非)

这些操作符用于组合布尔表达式,其运算结果可以是三个值之一:

  • TRUE
  • FALSE
  • NULL(表示“未知”或“不确定”)

注意:NULL在逻辑运算中不等于FALSE,它代表的是信息缺失或未知状态

运算优先级

逻辑操作符的优先级从高到低为:

NOT>AND>OR

例如:

A OR b AND c

等价于:

A OR (b AND c)

运算规则表(三值逻辑)

a

b

AND b

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。

实际应用示例

--查询年龄大于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显式处理。

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐