在我的应用程序中,我有一个包含一些过滤字段的表单。如果用户确实输入了我需要在where子句中作为参数提供的值,则无需任何操作。
我不知道如何在我的存储过程中处理这个问题。
例如以下存储过程:
--parameters
@customername varchar(50),
SELECT * from ORDERS
WHERE customername = @customername
因此,如果用户输入客户名称,那么它当然会返回所有客户名称,如果用户没有输入用户名,则需要返回所有客户名称。 我怎么能在这个声明中这样做?如果用户没有输入客户名称,我可以通过通配符吗?或者我需要一个单独的程序。 我希望这是有道理的,谢谢!
答案 0 :(得分:4)
试试这个
--parameters
@customername varchar(50) = NULL,
SELECT * from ORDERS
WHERE customername = COALESCE(@customername, customername)
根据您需要返回null的客户名称的注释,这与Russ'。
集成SELECT * from ORDERS
WHERE (customername = COALESCE(@customername, customername)
OR customername IS NULL)
答案 1 :(得分:3)
SELECT * from ORDERS
WHERE customername = @customername or @customername is null
答案 2 :(得分:1)
请参阅此链接以获取一些想法,以及条件where语句的不同方法的优缺点:
答案 3 :(得分:-1)
您可以在存储过程中编写if语句。像这样。
IF @customername is null
BEGIN
SELECT * FROM ORDERS
END
ELSE
BEGIN
SELECT * FROM ORDERS WHERE customername = @customername
END