SELECT 语句的 WHERE 条件中的空白输入参数

Blank input Parameters in a WHERE condition of a SELECT statement

我有一个包含 10 个输入参数的报告,其中只有两个是必需的,其余的是可选的。问题是,据我所知,如果您在 SELECT 语句的 WHERE 条件中使用空白的输入参数,则不会从 table 中选择任何记录,那么如何解决这个问题?

让我们尝试一些简单的事情:

SELECT * FROM contrat WHERE article = 'sumsung' AND price = null

用户输入了文章但没有输入价格 所以查询将 return 什么都没有,因为即使我们与 sumsung 文章

有合同,价格也为空

如果空白是指 null 或空字符串,则必须为每个可选参数构造一个条件,例如:

column_name = :optional_param OR :optional_param IS NULL

或:

column_name = :optional_param OR :optional_param = ''

因此,您的 WHERE 子句应如下所示:

WHERE <conditions for the non null parameters>
  AND (column_name1 = :optional_param1 OR :optional_param1 IS NULL) 
  AND (column_name2 = :optional_param2 OR :optional_param2 IS NULL)
  AND .......