逻辑运算符是 SQL 中用于组合或修改条件表达式的关键工具,它们返回布尔值(TRUE=1,FALSE=0)或 NULL。以下是 MySQL 中四种逻辑运算符的详细说明和使用方法。

 

一、逻辑非运算符(NOT / !)

基本规则

 反转操作数的逻辑值

 `NOT 0` 返回 1

 `NOT 非零值` 返回 0

 `NOT NULL` 返回 NULL

 

使用示例

SELECT NOT 10, NOT(1-1), NOT -5, NOT NULL, NOT 1+1;


NOT 10NOT(1-1)NOT -5NOT NULLNOT 1+1
010NULL0

 

优先级差异

 `NOT` 优先级低于 `+`:`NOT 1+1` = `NOT(1+1)` = `NOT 2` = 0

 `!` 优先级高于 `+`:`!1+1` = `(!1)+1` = `0+1` = 1

 

二、逻辑与运算符(AND / &&)

基本规则

 所有操作数为真时返回真

 真值表:


ABA AND B
非零非零1
非零00
非零NULLNULL
0任何0
NULL00
NULL非零NULL


使用示例

SELECT 1 AND -1, 1 AND 0, 1 AND NULL, 0 AND NULL;


1 AND -11 AND 01 AND NULL0 AND NULL
10NULL0


三、逻辑或运算符(OR / ||)

基本规则

 任一操作数为真时返回真

 真值表:

ABA OR B
非零任何1
0非零1
000
NULL非零1
NULL0NULL
NULLNULLNULL

使用示例

SELECT 1 OR -1 OR 0, 1 OR 2, 1 OR NULL, 0 OR NULL, NULL OR NULL;


1 OR -1 OR 01 OR 21 OR NULL0 OR NULLNULL OR NULL
111NULLNULL

 

四、逻辑异或运算符(XOR)

基本规则

 当操作数不同时为真/假时返回真

真值表:

 

ABA XOR B
非零非零0
非零01
非零NULLNULL
0非零1
000
0NULLNULL
NULL任何NULL


使用示例

SELECT 1 XOR 1, 0 XOR 0, 1 XOR 0, 1 XOR NULL, 1 XOR 1 XOR 1;


1 XOR 10 XOR 01 XOR 01 XOR NULL1 XOR 1 XOR 1
001NULL1

 

五、实际应用场景

1. 复杂条件筛选:

SELECT * FROM products 
WHERE (price > 100 OR stock > 50) 
AND NOT discontinued;

 

2. 权限控制:

SELECT * FROM users 
WHERE (admin = 1 XOR moderator = 1) 
AND active = 1;


3. 状态查询:

SELECT * FROM orders 
WHERE (status = 'shipped' OR status = 'delivered') 
AND NOT payment_pending;


六、重要注意事项

1. 运算符优先级(从高到低):

  

SQL 逻辑运算符
!
NOT
AND / &&
XOR
OR / ||


2. NULL 处理规则:

    任何包含 NULL 的逻辑运算都可能返回 NULL

    使用 `IS NULL` 或 `IS NOT NULL` 明确检查 NULL 值

3. 最佳实践:

    使用括号明确运算顺序

    保持一致的运算符风格(全部用符号或全部用单词)

    复杂逻辑表达式分行书写提高可读性

点赞(1)

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

Dotcpp在线编译      (登录可减少运行等待时间)