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 .......
我有一个包含 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 .......