我只是好奇。 我知道NULL安全等运营商<=>,但有一些空安全不等于运营商,或我必须一直使用类似的东西:
(tab.id != 1 OR tab.id IS NULL)
还是有人喜欢
!(tab.id <=> 1)
我只是好奇。 我知道NULL安全等运营商<=>,但有一些空安全不等于运营商,或我必须一直使用类似的东西:
(tab.id != 1 OR tab.id IS NULL)
还是有人喜欢
!(tab.id <=> 1)
COALESCE(tab.id, 0) != 1
如果你喜欢的话可以在这里使用。 我经历的参数,并返回第一个值不是NULL
。 在如果是这种情况下NULL
,它将比较0 != 1
。 虽然它可能会使用更多的迹象,它仍然是易于管理,而不是被迫总是有相反的“布尔”在这种情况下的解决方案。
阅读文档COALESCE()
我发现,NOT(NULL <=> 1)的作品,我想这也是符合ISO标准,但是很麻烦。 一个更好的方式来显示使用列名会是这样的:NOT(tbl.col1 <=> 1)
现在,MySQL没有一个NULL安全不等于操作。
使用MySQL最普遍的解决方案是:
!(tab.id <=> 1)
要么
NOT tab.id <=> 1
因为它会正常工作,如果连到位1
将使用NULL
。
如果您知道的比较RHS IS NOT NULL
:
COALESCE(tab.id != 1, 1)
要么
COALESCE(tab.id != 1, TRUE)
会给你正确的结果。
这是否是比更具可读性:
(tab.id != 1 OR tab.id IS NULL)
是值得商榷的..
我也被引诱来滤除NULL
与比较第一逻辑,所以我没有去想他们! 我可能会写你的第一个公式为:
(tab.id IS NULL OR tab.id != 1)
性能将取决于流行NULL
小号不过。