在C#中搜索给出错误的结果
我有一个电子邮件文本框,通过它我可以执行搜索。如果我键入a_Scott,结果是以a_Scott开头的电子邮件,但我收到了 a、 斯科特, 艾杰斯科特, 阿尔斯科特。在C#中搜索给出错误的结果,c#,sql-server,wildcard,C#,Sql Server,Wildcard,我有一个电子邮件文本框,通过它我可以执行搜索。如果我键入a_Scott,结果是以a_Scott开头的电子邮件,但我收到了 a、 斯科特, 艾杰斯科特, 阿尔斯科特。 这是我的密码: if (!string.IsNullOrWhiteSpace(request.EmailAddress)) { var email = request.EmailAddress.IndexOf("*", 0, StringComparison.InvariantCulture) >= 0
这是我的密码:
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()));
}
原因是您使用的是类SQL运算符 如果你看一看像,你会发现“u”字符有特殊的含义,需要像使用百分号一样进行转义 _(下划线)-任何单个字符 若要转义
。
字符,只需使用方括号,如so[\u]
因此,您的查询如下所示:
SELECT *
FROM Users
WHERE email LIKE '%a[_]Scott%'
原因是您使用的是类SQL运算符 如果你看一看像,你会发现“u”字符有特殊的含义,需要像使用百分号一样进行转义 _(下划线)-任何单个字符 若要转义
。
字符,只需使用方括号,如so[\u]
因此,您的查询如下所示:
SELECT *
FROM Users
WHERE email LIKE '%a[_]Scott%'
这里有一个sql小提琴来澄清这些理解
这里有一个sql小提琴来澄清这些理解