|
|
1
4
关于如何将LIKE运算符与参数一起使用,有几个选项。 选项1 如果将%添加到参数值中,则可以自定义LIKE筛选器的处理方式。例如,您的查询可以是:
为了使数据集正确使用LIKE语句,您可以使用类似sysa%的参数值。当我使用此代码在SSRS 2008中测试示例报告时,我返回了以下四个表:
选项2 另一种不需要用户添加任何“%”符号的方法是生成一个包含代码的变量并超越该变量。
这将使您能够更好地控制如何使用LIKE语句。如果你不希望用户注入任何额外的运算符,那么你总是可以添加代码,在将非字母数字字符合并到最终查询之前将其删除。 选项3 您可以创建一个存储过程来控制此功能。我通常更喜欢使用存储过程作为SSRS的数据源,从不允许动态生成SQL,但这只是我的偏好。这有助于在执行依赖性分析检查时提高可发现性,并使您能够确保最佳的查询性能。 选项4 创建一个。NET代码程序集,有助于动态生成SQL代码。我认为这是一个矫枉过正的选择,充其量也是一个糟糕的选择,但可以想象,它可能会奏效。 |
|
|
2
0
您是否尝试过:
|
|
|
3
0
达诺,你使用的是哪个版本的SSRS?如果是RS2000,则多参数列表为 没有官方支持,但有一个解决方法。... |
|
4
0
这样写:
|
|
|
5
0
我知道这太老了,但在我寻找解决同样问题的方法时,我遇到了这个问题,最后我使用了一个这里没有描述的解决方案。我正在添加一个新的潜在解决方案,以帮助其他可能效仿的人。 如上所述,此解决方案仅适用于SQL Server 2016及更高版本,但可以通过编写自定义 string_split 通过使用子查询而不是CTE。 首先,使用JOIN将@SearchedDescription作为单个字符串映射到数据集中:
然后使用STRING_SPLIT将“A,B,C,D”类型的字符串映射到表格结构中。
如果有人多次添加相同的搜索词,这将在结果集中重复行。同样,一个产品可以匹配多个搜索词。我添加了
如果你的查询更复杂(包括其他连接的结果),那么这可能会成为一个越来越大的问题。请注意,这是这种方法的主要缺点。 |