You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用LIKE比较竖线分隔文本字段与指定列(SSRS场景)

SSRS 竖线分隔文本全匹配解决方案

需求说明

通过Lookup/LookupSet生成竖线(|)分隔的文本(示例:Bobo Vera|Bobo Vera|Bob Veras|Bobos Veras| Bob, Verra),需将Column A的内容(示例:bobo vera)与分隔后的每个元素用LIKE运算符匹配:

  • 所有元素均匹配Column A → 输出Success
  • 任意元素不匹配 → 输出Not same
  • 分隔元素的数量、长度无固定限制

实现步骤

1. 添加自定义代码

打开报表属性 → 切换到「代码」标签页,粘贴以下VB代码:

Function CheckAllMatches(columnA As String, pipeSeparatedText As String) As String
    ' 处理空文本的情况
    If String.IsNullOrEmpty(pipeSeparatedText) Then
        Return "Not same"
    End If
    
    ' 拆分竖线分隔的文本为数组
    Dim items As String() = pipeSeparatedText.Split("|"c)
    
    ' 清理Column A:去首尾空格、合并连续多空格、转小写(忽略大小写匹配)
    Dim cleanTarget As String = Replace(columnA.Trim(), "  ", " ").Trim().ToLower()
    
    ' 遍历每个元素进行匹配
    For Each item As String In items
        ' 清理当前元素:去首尾空格、合并连续多空格、转小写
        Dim cleanItem As String = Replace(item.Trim(), "  ", " ").Trim().ToLower()
        
        ' 使用LIKE模糊匹配,只要有一个元素不匹配就返回Not same
        If Not cleanItem Like "*" & cleanTarget & "*" Then
            Return "Not same"
        End If
    Next
    
    ' 所有元素都匹配则返回Success
    Return "Success"
End Function

2. 调用自定义代码的表达式

在需要输出结果的文本框中,使用以下表达式:

=Code.CheckAllMatches(Fields!ColumnA.Value, 
    IIf(Lookup(Fields!IDa1.Value, Fields!ID.Value, Fields!givenName.Value, "Brother_Sister")<>"",
    Join(LookupSet(CStr(Fields!FamilyID.Value), Fields!BrotherGrpID.Value, CStr(Fields!givenName.Value), "Brother_Sister"), "|"), ""))

逻辑说明

  • 文本清理:统一处理Column A和分隔元素的空格问题(合并多空格、去首尾空格),转小写实现大小写不敏感匹配
  • 匹配规则:使用LIKE运算符结合通配符*实现模糊匹配,若需精确匹配可修改为cleanItem = cleanTarget
  • 终止逻辑:遍历中只要发现不匹配的元素,立即返回Not same,无需继续检查剩余元素

内容的提问来源于stack exchange,提问作者EMPOWER EXCEL

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 12:52:44