![]() |
1
4
关于如何将like运算符与参数一起使用,有几个选项。 选项1 如果将%添加到参数值中,则可以自定义类似筛选器的处理方式。例如,您的查询可以是:
为了使数据集正确地使用LIKE语句,可以使用像SYSA%这样的参数值。当我使用此代码在SSR2008中测试样本报告时,返回了以下四个表:
选项2 另一种不需要用户添加任何“%”符号的方法是生成一个包含代码的变量,并对该变量执行异常运算。
这将使您能够更好地控制如何使用like语句。如果不希望用户插入任何其他运算符,则可以始终添加代码,以便在将非字母数字字符合并到最终查询之前将其删除。 选项3 可以创建控制此功能的存储过程。我通常喜欢使用存储过程作为SSR的数据源,从不允许动态生成SQL,但这只是我的偏好。这有助于在执行依赖性分析检查时发现问题,并允许您确保最佳查询性能。 选项4 创建有助于动态生成SQL代码的.NET代码程序集。我认为这是一个过度杀伤力和糟糕的选择,但它可以想象的工作。 |
![]() |
2
0
您是否尝试过:
|
![]() |
3
0
达诺,你用的是哪种版本的SSR?如果是RS2000,多参数列表是 没有官方支持,但有一个解决办法…… |
![]() |
4
0
这样做:
|
![]() |
5
0
我知道这是一个非常古老的问题,但这是我在寻找解决相同问题的方法时发现的,最后我使用了一个这里没有描述的解决方案。我正在添加一个新的潜在解决方案来帮助其他人。 如前所述,此解决方案仅在SQL Server 2016和更高版本中有效,但可以通过编写自定义的 string_split 使用子查询而不是CTE。 首先,使用join将@searcheddescription作为单个字符串映射到数据集中:
然后使用字符串“split”将您的“a、b、c、d”类型的字符串映射到表格结构中。
如果有人多次添加相同的搜索词,结果集中的行将重复。同样,一个产品可以匹配多个搜索词。我补充说
如果您的查询更复杂(包括来自其他联接的结果),那么这可能会成为一个日益严重的问题。请注意,这是该方法的主要缺点。 |