MySQL where 子句奇怪 returns 所有行

MySQL where clause strangely returns all rows

有人在我的网站上尝试 SQL 注入。 He/she 没有成功,但是 he/she 尝试的东西引起了我的注意。

这个 where 子句 return 所有行,我不知道为什么会这样。

SELECT * FROM MyTable WHERE MyColumn=''=''

我在 MySQL 和 MariaDB 中尝试了这个语句,它们都 returned 所有行。这个语句不应该抛出语法错误吗?为什么 return 所有行?

想象一下这个查询:

select * from MyTable where false='';

然后,把你的分成:

SELECT * FROM MyTable WHERE (MyColumn='')=''