在我的应用程序中,我有一个包含一些过滤器字段的表单。不需要任何内容,如果用户确实输入了值,则需要在where子句中将其作为参数提供。
我不知道如何在存储过程中处理此问题。
例如以下存储过程:
--parameters
@customername varchar(50),
SELECT * from ORDERS
WHERE customername = @customername
因此,如果用户输入客户名,那么它当然会返回该客户名的所有内容,如果用户未输入用户名,则需要返回所有内容。
如何在此声明中执行此操作?如果用户未输入客户名称,是否可以通过通配符?还是我需要一个单独的程序。
我希望这是有道理的,谢谢!
最佳答案
尝试这个
--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)
关于c# - 具有非必需参数的SQL存储过程,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3478668/