在MySQLWorkbench中执行以下查询后,只返回第一行。
select * from (
select true as a
union select false as a
union select null as a
) x
where a
我从中得出的结论是,查询的 where
子句的计算结果为 null
的行将被过滤掉。但是,我找不到此行为的文档,因此我想在编写依赖于它的查询之前检查是否可以假设此行为将始终发生。因此
此行为是否始终发生,如果是,则会发生,
有这方面的文件吗?
是的,此行为符合预期。
来自文档(https://dev.mysql.com/doc/refman/5.7/en/working-with-null.html(:
在MySQL中,0或NULL表示false,其他任何内容都表示true。布尔运算的默认真值为 1。
因此,null 和 false 都会被过滤掉,只返回带有 true 的行。