【问题标题】:SSRS - Adding "LIKE" filter criteria to report builderSSRS - 向报告生成器添加“LIKE”过滤条件
【发布时间】:2012-04-30 11:40:51
【问题描述】:

我想在 SSRS 报表生成器中添加一个带有通配符的 LIKE 过滤器。我尝试使用报表生成器的过滤数据部分中存在的 contains 子句。 '*' 和 '%' 我都试过了,但都失败了。

我试过了 MyFieldName 包含 2451 - 这成功了 MyFieldName 包含 24* - 这失败了 MyFieldName 包含 24% - 这失败了

从下面的链接中,我觉得这是一个老问题,到目前为止还没有解决方案。

http://connect.microsoft.com/SQLServer/feedback/details/202792/ssrs-adding-like-filter-criteria-to-report-builder

你们有什么建议?

谢谢
拉维·古普塔

【问题讨论】:

    标签: sql-server reporting-services report-builder2.0


    【解决方案1】:

    你可以使用InStr函数

    =IIF(InStr(Fields!MyFieldName.Value, "2451"),TRUE,FALSE)
    

    【讨论】:

    • 感谢 darren 的及时回复,我需要的是 "=IIF(InStr(Fields!MyFieldName.Value, "2451*"),TRUE,FALSE)" 我收到错误消息说无效字符写这个。
    • 以下为我工作 IF(FIND(MyFieldName, "24") = 1, TRUE, FALSE) 从您的回答中得到了这个想法。谢谢。我会将其添加为我自己问题的答案,但只能在 8 小时后添加。
    • 在我看来,这并不能真正回答问题,因为它不处理通配符。很高兴 OP 能够继续他的项目,但这对正在寻找在 SSRS 过滤器中使用通配符的未来用户没有帮助。
    • @TabAlleman 这个答案已被接受并帮助了 OP,这是我的目标。如果您有更好的解决方案,请随时发布。
    【解决方案2】:

    在 SSRS 中,我们不能使用 Like。您可以使用 Contains 代替它。

    IIF((MyFieldName).ToString().Contains("RequiredString"),"True","False)
    

    【讨论】:

      【解决方案3】:

      在 Visual Studio 的报表生成器中,有一个 Like,它可以工作。在搜索字符串中使用 * 作为通配符

      【讨论】:

        【解决方案4】:

        回答我自己的问题,下面的函数对我有用:

        IF(FIND(MyFieldName, "24") = 1, TRUE, FALSE)

        这只是部分答案,因为这适用于 (blabla*) 之类的情况,但不适用于 (bla*bla, blabla*) 之类的情况。因此,欢迎任何有更好想法的人。

        从上面 Darren 的评论中得到了这样做的想法。

        谢谢
        拉维·古普塔

        【讨论】:

          【解决方案5】:

          报表生成器不支持LIKE 运算符。你必须使用CONTAINS;

          【讨论】:

            【解决方案6】:

            这对聚会来说已经很晚了,但我为我的数据集制定了一个参数过滤器的解决方案。 使用
            Expression:

            向我的数据集添加过滤器
            =IIF(InStr(Fields!AccountName.Value, Parameters!paramAccountName.Value) OR Parameters!paramAccountName.Value = "*", TRUE, FALSE)
            

            类型

            Boolean  
            

            操作员

            =
            

            价值

            true
            

            该参数默认为“*”,因此报表看起来默认抓取所有内容。

            【讨论】:

              【解决方案7】:

              我刚刚遇到了这个旧线程,我很好奇为什么你不能使用 like 关键字,因为我一直使用它。 你尝试过这样的事情吗? 在哪里(帐户名称,例如 '%' + @paramAccountName + '%' 或 @paramAccountName ='')

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 1970-01-01
                • 2013-03-07
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多