2014-01-29 58 views
0

我有一個電子郵件的文本框,通過它我可以執行search.If i型a_Scott結果是開始電子郵件:a_Scott但我正在逐漸 a.scott, ajscott, arscott。
這裏是我的代碼:搜索在C#中給出錯誤的結果

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())); 
} 

回答

6

這樣做的原因是,您使用的是SQL LIKE操作。

如果你看看LIKE documentation,你會發現'_'字符有特殊的含義,需要像百分號那樣被轉義。

下劃線(_) - 任何單個字符。

轉義_字符只是使用方括號,如[_]

所以,你的查詢變得像這樣:

SELECT * 
FROM Users 
WHERE email LIKE '%a[_]Scott%'