検索を実行できるEメールテキストボックスがあります。a_Scottと入力すると、結果はa_Scottで始まるEメールになりますが、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()));
}
これは、SQLLIKE演算子を使用しているためです。
LIKEのドキュメントを見ると、「_」文字には特別な意味があり、パーセント記号の場合と同じようにエスケープする必要があることがわかります。
_(アンダースコア)-任意の1文字。
_
文字をエスケープするには、そのように角かっこを使用します[_]
。
したがって、クエリは次のようになります。
SELECT *
FROM Users
WHERE email LIKE '%a[_]Scott%'
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加