You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何含NULL的AND、OR运算真值表是这样的?三值逻辑解析

MySQL三值逻辑(3VL)中AND/OR与NULL的运算规则解析

真值表参考

MySQL含NULL的AND/OR运算真值表

三值逻辑的核心运作逻辑

SQL采用的三值逻辑(3VL)里,NULL代表未知值,不属于布尔值的真/假范畴,运算结果需基于「未知值参与逻辑运算时的可能性」推导:

AND运算规则

AND运算要求两边同时为真时结果才为真,只要任意一边为假,结果就确定为假:

  • FALSE AND NULL:AND运算只要有一个操作数为假,无论另一个值是什么,结果必然为假——哪怕NULL是未知,也无法改变「已有一个假」的事实,因此返回FALSE。
  • TRUE AND NULL:结果完全取决于未知的NULL,若NULL为真则结果为真,若为假则结果为假,整体结果无法确定,返回NULL。
  • NULL AND NULL:两个操作数都是未知,最终结果无法判定,返回NULL。

OR运算规则

OR运算只要任意一边为真,结果就为真:

  • TRUE OR NULL:已有一个操作数为真,无论NULL是什么,结果必然为真,返回TRUE。
  • FALSE OR NULL:结果取决于未知的NULL,若NULL为真则结果为真,若为假则结果为假,整体结果无法确定,返回NULL。
  • NULL OR NULL:两个操作数都是未知,最终结果无法判定,返回NULL。

测试验证SQL

可执行以下SQL语句直接验证上述规则:

SELECT 'AND' AS op, TRUE AND NULL, FALSE AND NULL, NULL AND NULL 
UNION ALL
SELECT 'OR' AS op, TRUE OR NULL, FALSE OR NULL, NULL OR NULL;

内容的提问来源于stack exchange,提问作者David542

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 06:38:17