是否可以使用动态TSQL查询?

eug*_*neK 0 sql-server asp.net ado.net

我有很长的选择查询,我需要根据一些参数进行过滤,我试图通过使用部分动态TSQL来避免在单个存储过程中使用不同的存储过程或if语句...

我会避免长期选择只是为了清酒

select a
from b
where c=@c
or d=@d
Run Code Online (Sandbox Code Playgroud)

@c和@d是过滤器参数,只有一个可以同时过滤,但也可以禁用这两个过滤器.对于每个这些意味着param是禁用的0,所以我可以用where语句创建nvarchar ...

我如何在这里集成动态查询,以便'where'可以添加到普通查询中.我无法将所有查询添加为大nvarchar,因为其中有太多东西需要更改(即.何时,子查询,连接)

lc.*_*lc. 5

怎么样的:

SELECT a
FROM b
WHERE (@c IS NULL OR c = @c)
AND (@d IS NULL OR d = @d)
Run Code Online (Sandbox Code Playgroud)

如果您不使用过滤器,请将参数设置为,NULL并且条件应该短路.