MySQL的三值逻辑
MySQL 采用三值逻辑
SELECT 1 = 1;
SELECT 1 = 2;
SELECT 1 = NULL;
SELECT 1 != NULL;
上面四条语句的结果分别为:

可见MySQL采用三值逻辑,1, 0, NULL
影响
IN语句
首先选择一个表t1:

如果采用IN语句,则正常运行。但如果采用NOT IN语句,则结果为空集。

猜测与验证
IN语句将值分别与集合中的元素进行判断并进行或运算OR,而FALSE OR NULL的结果为NULL。
以下为验证结果:
与/或运算

非运算

异或运算

比较运算

IS运算符

总结一下:
TRUE OR NULL结果为TRUEFALSE OR NULL结果为NULLTRUE AND NULL结果为NULLFALSE AND NULL结果为FALSENOT NULL结果为NULLNULL XOR TRUE/FALSE/NULL结果为NULLNULL = NULL结果为NULLIS NULL是唯一可以将NULL转换为逻辑真假的运算符

浙公网安备 33010602011771号