如何使安全条件无效?

时间:2019-04-10 12:43:15

标签: mysql sql

这是逻辑:

. . . WHERE hh.deleted = 0 OR hh.deleted IS NULL . . .

我想使其更简洁明了,所以这里是新版本:

. . . WHERE hh.deleted <=> 0 . . .

但是结果不一样..知道为什么吗?和有什么不一样?

1 个答案:

答案 0 :(得分:2)

它们不是相同的逻辑。考虑以下

deleted   deleted = 0 OR deleted IS NULL   deleted <=> 0
0         1                                1
1         0                                0
NULL      1                                0

原因是如果一个操作数为<=>NULL只会返回0(而不是如果NULL为{{ 1}}),而在这种情况下deleted = 0将返回1。

Demo on dbfiddle