我有一个订单搜索页面,用户可以输入任何搜索条件并提交。 如果点击提交而没有输入任何标准,我们应该显示所有订单。 如果用户输入orderId,我们应该只显示相应的订单。 如果用户输入日期范围和状态,我们应该在选定日期范围内显示具有该选定状态的订单。如何为搜索页面制作通用查询?
我试过了,如图所示。
SELECT * FROM dbo.Orders
WHERE (OrderNumber ='' OR OrderNumber ='212')
AND ((OrderDate BETWEEN '2010-01-01' AND '2012-10-10')
OR (OrderDate BETWEEN '' AND '') )
使用'NULL'来指示未指定的值可能会有帮助。空串可以是适当的值,例如我想找到'ShippingNotes'为空的简单订单。 – HABO 2012-07-19 01:07:57
是的'NULL'会造成一些复杂的事情,但是在读入OP时,我发现他正在使用空字符串。如果OP想要将'NULL'传递到命令中,那么你简单地将'@Variable ='''改成'@Variable IS NULL',其余的都是一样的。当然,在另一方面,您可能需要隔离NULL记录。在这种情况下,where子句将类似于COALESCE(@Variable,'dummystring')= COALESCE(FieldName,'dummystring')' – Malk 2012-07-19 17:44:35