带有动态IN()运算符的SQL Where子句

时间:2013-01-14 06:51:13

标签: sql sql-server-2008 where-clause

我有一个查询,以后应该用于构建SSRS-2008报告。 此查询将用作许多报告的通用模板。

因此,查询中包含大量参数,每个报告都应在报表生成器中相应地配置参数。

在这个长篇介绍之后,我的问题是:

在查询的WHERE子句中,参数位于IN()运算符中,例如:

WHERE Users IN(@p1) AND ...

一个报告中的@p1可以是特定用户(例如WHERE Users IN(121,154,151)),而在不同的报告中,所有用户。在这种情况下,这是我的问题,参数@p1应该得到什么值?

我知道我可以使用不同的数据集来检索所有用户并将其放在参数中,但我想避免这种情况(由于性能问题并尽可能保持查询的通用性)并想知道是否还有其他选择吗? (类似于IN('% %')

谢谢。

2 个答案:

答案 0 :(得分:2)

首先,我喜欢你充满爱的画面,祝你生活愉快。

之后你可能会发现This same question of mine about list-like parameters很有用,我几天前问过它,并提出了非常好的各种解决方案。

希望它有所帮助。

答案 1 :(得分:1)

您只需更改参数

即可
  @p1 = "SELECT users FROM table"