【问题标题】:MySQL don't read second OR condition if the first one is true如果第一个为真,MySQL 不会读取第二个 OR 条件
【发布时间】:2020-11-15 15:12:22
【问题描述】:

我正在尝试创建一个 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 是一个字符串时会出错,因为 MySQL 会读取:WHERE column IS 'string'

有没有办法解决这个问题?

【问题讨论】:

    标签: mysql sql string where-clause sql-null


    【解决方案1】:

    你似乎想要<=>null-safe equality operator

    WHERE column <=> param
    

    基本上,NULL &lt;=&gt; NULL 为真,而NULL = NULL 未定义。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-06-30
      • 1970-01-01
      • 2017-12-11
      • 1970-01-01
      • 1970-01-01
      • 2020-06-26
      • 2011-10-10
      • 1970-01-01
      相关资源
      最近更新 更多