MySQL 如果第一个为真,则不读取第二个 OR 条件

MySQL don't read second OR condition if the first one is true

我正在尝试创建一个 SQL 语句,其中我从 C# 代码获取参数。 问题是有些参数可以是'null'。但是在 MySQL 中我无法正确阅读 WHERE column=NULL 并且我只能做 WHERE column IS NULL.

所以我试图做出这样的声明:

SELECT *
FROM table
WHERE column=param #(param given from C#)
OR column IS param

我认为这会很好,因为如果第一个条件已经为真(例如 Python),MySQL 不应该关心第二个条件。当 param 为空时它确实有效。但是当 param 是一个字符串时会出现错误,因为 MySQL 读取:WHERE column IS 'string'.

有办法解决吗?

你好像想要<=>, null-safe equality operator:

WHERE column <=> param

基本上,NULL <=> NULL 是正确的,而 NULL = NULL 是未定义的。

请注意,您应该使用准备好的语句将参数正确地传递给查询。字符串 'null'null 值不同。