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

ASP Classic中如何在IF语句内正确使用LIKE判断包含指定邮箱

你当前使用的是ASP环境的VBScript语法,原生VBScript不支持SQL风格的LIKE运算符和%通配符写法,所以原有代码会直接报错。另外直接做模糊子串匹配还可能出现误判,比如目标邮箱是a@example.com,邮箱列表里存在aa@example.com时,模糊匹配会错误判定命中。

下面是两种可用的解决方案:

方案1:拆分列表精准匹配(推荐,无匹配误差)

将逗号分隔的邮箱列表拆分为数组后遍历比对,完全避免误判问题,同时兼容邮箱列表里带空格的场景:

UserEmailForTask = Session("ADmail")
Dim IT_User_Tasks
IT_User_Tasks = "NO" ' 先赋默认值

' 优先判断部门条件
If Session("ADdepartment") = "IT" Then
    IT_User_Tasks = "YES"
Else
    Dim emailArr, currEmail
    ' 拆分逗号分隔的邮箱列表
    emailArr = Split(objGetTaskEmailsSettings("IT_Email"), ",")
    For Each currEmail In emailArr
        ' 去除前后空格后做全等匹配
        If Trim(currEmail) = UserEmailForTask Then
            IT_User_Tasks = "YES"
            Exit For ' 命中后直接退出循环,无需继续遍历
        End If
    Next
End If

方案2:精简写法(适合不想写循环的场景)

给邮箱列表和目标邮箱前后都拼接逗号,再用InStr函数判断是否存在,可以避免部分匹配的误判问题:

UserEmailForTask = Session("ADmail")
Dim IT_User_Tasks
IT_User_Tasks = "NO"

If Session("ADdepartment") = "IT" OR InStr("," & Replace(objGetTaskEmailsSettings("IT_Email"), " ", "") & ",", "," & UserEmailForTask & ",") > 0 Then
    IT_User_Tasks = "YES"
End If

这里加了Replace去除邮箱列表里的所有空格,适配列表中邮箱前后带空格的场景。

内容的提问来源于stack exchange,提问作者Stig Kølbæk

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 16:09:01