我正在开发用于生成报告的 MVC 应用程序。我提供了许多搜索选项,如下所示
Customer id
Customer name
Customer E-mail
State
Country
用户1:
如果某个用户仅向某些值提供输入,例如
Customer id = 1
Customer name = A
默认情况下,其他参数作为 null 传递给存储过程。
Customer E-mail
State
Country
用户2:
如果某个用户只会输入某些值,例如
客户邮箱=xtz@gmail.com
默认情况下,其他参数作为 null 传递给存储过程。
Customer id
Customer name
State
Country
如何在存储过程的 SQL 查询中使用 where 子句。我们可以像下面这样做吗
string qry = select * from table_name where status != d
if (@customerID!=null)
qry = qry + "and customer_id=@customerID"
if (@customerName!=null)
qry = qry + "and customer_name=@customerName"
请告诉我对此的最佳方法。
谢谢, 维鲁
最佳答案
如果您要创建动态 SQL,那么您可以像上面一样执行操作:
DECLARE @SQL NVARCHAR(MAX)
SELECT @SQL = 'SELECT * FROM TABLE '
if (@customerID IS NOT NULL)
SQL = SQL + " AND customer_id = @customerID"
或者另一种选择是像这样处理
SELECT *
FROM TABLE
WHERE (@customerID IS NULL OR customer_id = @customerID)
我更喜欢第二个,因为它使用参数化变量。第一个示例需要更深入地考虑恶意输入。
关于sql - SQL 查询中的条件Where 子句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5874108/