MySQL内部没有bool值.看似返回布尔值的表达式实际上返回0或1的整数:
SELECT (3 < 5)
1
SELECT (3 > 5)
0
SELECT (3 < 4) + (4 < 5)
2
SELECT TRUE
1
Run Code Online (Sandbox Code Playgroud)
TRUE和FALSE只是1和0的别名.
NULL不等于任何值,甚至不是另一个NULL.
SELECT NULL = ''
NULL
SELECT NULL = NULL
NULL
Run Code Online (Sandbox Code Playgroud)
如果要与NULL比较使用IS NULL.
更新:MySQL是否支持布尔值存在一些混淆.此示例显示即使列上的BOOL类型仍然只是一个整数:
CREATE TABLE table1 (id INT, x BOOL); INSERT INTO table1 VALUES (1, TRUE), (2, FALSE), (3, 3); -- Can you insert 3 into a BOOL type? Yep! SELECT * FROM TABLE1;
结果:
id x
1 1
2 0
3 3
Run Code Online (Sandbox Code Playgroud)