SQL报告2008;检查数组是否包含字符串

Jon*_*son 5 reporting-services

在SQL Reporting 2008中,如何确定数组是否包含字符串?

示例,希望以下内容返回“ 1”:

IIf(Split("a,b,c", ",").CONTAINS("a"), "1", "0")
Run Code Online (Sandbox Code Playgroud)

什么可以代替上述CONTAINS功能?不可能吗 这个值就是我的表格的FilterExpression。其目的是决定显示什么和隐藏什么。

Hom*_*mer 5

让我们用作MyLettersParameter多选参数。要确定它是否包含“a”,请使用:

=Array.IndexOf(Parameters!MyLettersParameter.Value, "a") > -1
Run Code Online (Sandbox Code Playgroud)

上面的代码返回trueor false。要返回“1”,请使用:

=IIf(Array.IndexOf(Parameters!MyLettersParameter.Value, "a") > -1, "1", "0")
Run Code Online (Sandbox Code Playgroud)


Fra*_*son 4

如果你只是在一个表达中寻找答案,我并不肯定。但是,您可以编写 .Net 方法并像调用自定义 dll 或报表的“代码”部分中的表达式一样调用它们。如果您使用内置代码,您可以执行如下操作:

http://www.vbforums.com/showthread.php?t=558440

在 SSRS 中创建内联代码或引用程序集:

http://bryantlikes.com/pages/824.aspx

更新:从连接字符串中获取分隔值的示例:

http://www.dotnetperls.com/split-vbnet

更新:

这是您可以使用的功能。您将其放在报告的代码部分中:

Public Function Contains(ByVal ItemToCheck As String, ByVal CommaValuesList As String, ByVal delimeter As Char) As Boolean
    Dim commaValues() As String = Split(CommaValuesList, delimeter, -1, CompareMethod.Text)

    For Each commavalue As String In commaValues
        If ItemToCheck.ToLower.Trim = commavalue.ToLower.Trim Then
            Return True
        End If
    Next

    Return False
End Function
Run Code Online (Sandbox Code Playgroud)

使用以下语法来引用它:

=code.Contains(param1,param2,param3)
Run Code Online (Sandbox Code Playgroud)