【问题标题】:Searching in C# giving wrong results在 C# 中搜索给出错误的结果
【发布时间】:2014-01-29 15:49:48
【问题描述】:

我有一个电子邮件文本框,我可以通过它执行搜索。如果我输入 a_Scott 结果是电子邮件,开头是:a_Scott 但我得到 斯科特, 艾斯科特, 阿斯科特。
这是我的代码:

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

【问题讨论】:

    标签: c# sql-server wildcard


    【解决方案1】:

    这是因为您使用的是 SQL LIKE 运算符。

    如果你看一下 LIKE documentation,你会发现 '_' 字符具有特殊含义,需要像百分号一样进行转义。

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

    要转义 _ 字符,只需使用方括号,如 [_]

    所以你的查询变成了这样:

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

    【讨论】:

      【解决方案2】:

      这是一个 sql fiddle 来澄清理解 http://sqlfiddle.com/#!6/d88af/4

      【讨论】:

        猜你喜欢
        • 2018-01-18
        • 1970-01-01
        • 2013-08-21
        • 2023-03-22
        • 1970-01-01
        • 1970-01-01
        • 2017-09-21
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多