在C#中搜索给出错误的结果

Jun*_*Dev 0 c# sql-server wildcard

我有一个电子邮件文本框,通过它我可以执行搜索.如果我键入a_Scott结果是开始的电子邮件:a_Scott但我得到a.scott,ajscott,arscott.
这是我的代码:

if (!string.IsNullOrWhiteSpace(request.EmailAddress))
{
    var email = request.EmailAddress.IndexOf("*", 0, StringComparison.InvariantCulture) >= 0
                ? request.EmailAddress.RemovePercentsign().ReplaceAsterikWithPercentSign()
                : request.EmailAddress + "%";

    command.Parameters.Add(new SqlParameter("@Email", email.Trim()));
}
Run Code Online (Sandbox Code Playgroud)

Kas*_*ols 6

原因是您正在使用SQL LIKE运算符.

如果您查看LIKE 文档,您可以看到'_'字符具有特殊含义,需要像使用百分号一样进行转义.

_(下划线) - 任何单个字符.

要逃避_角色,只需使用方括号[_].

所以你的查询变成这样:

SELECT * 
FROM Users
WHERE email LIKE '%a[_]Scott%'
Run Code Online (Sandbox Code Playgroud)