gpt4 book ai didi

sql-server - SSRS : Change SQL Statement Dynamically

转载 作者:行者123 更新时间:2023-12-02 21:29:58 27 4
gpt4 key购买 nike

我在 SSRS 2005 中有一份报告,该报告基于与此类似的查询:

SELECT * FROM MyTable (NOLOCK) 
WHERE col1 = 'ABC'
AND col2 LIKE '%XYZ%'

我需要能够根据用户是否选中了复选框,在查询中动态包含 WHERE 子句的 AND 部分。基本上,这是一个动态 SQL 语句,这就是问题所在。我尝试了多种方法均无济于事。这可能吗? SSRS 2005 支持动态 SQL 吗?谢谢!

最佳答案

查尔斯几乎得到了正确的答案。

应该是:

SELECT * FROM MyTable (NOLOCK) 
WHERE col1 = 'ABC'
AND (@checked = 0 OR col2 LIKE '%XYZ%')

这是 SQL 中条件谓词的经典“模式”。如果@checked = 0,那么它将返回与谓词其余部分匹配的所有行(col1 = 'ABC')。 SQL Server 甚至不会处理 OR 的后半部分。

如果@checked = 1,那么它将评估OR的第二部分,并返回与col1 = 'ABC' AND col2 LIKE '%XYZ匹配的行%'

如果您有多个条件谓词,可以使用此方法将它们链接在一起(而 IF 和 CASE 方法很快就会变得难以管理)。

例如:

SELECT * FROM MyTable (NOLOCK) 
WHERE col1 = 'ABC'
AND (@checked1 = 0 OR col2 LIKE '%XYZ%')
AND (@checked2 = 0 OR col3 LIKE '%MNO%')

不要使用动态 SQL,不要使用 IF 或 CASE。

关于sql-server - SSRS : Change SQL Statement Dynamically,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/137784/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com