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
值不同。
我正在尝试创建一个 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
值不同。