c# - 在 c# 的 MySQL 查询中使用文字下划线字符

标签 c# mysql escaping

我想从我的 ASP.NET 应用程序向 MySQL 发出此查询

SELECT * FROM responses WHERE field_id LIKE '3\_%'

换句话说,我正在寻找第二个字符是下划线文字字符的记录。

模型设计者生成的代码如下所示:

    public virtual RiskAnalysis.responsesDataTable GetResponseGroupForAnalysis(int raid, string fieldid) {
    this.Adapter.SelectCommand = this.CommandCollection[2];
    this.Adapter.SelectCommand.Parameters[0].Value = ((int)(raid));
    if ((fieldid == null)) {
        throw new global::System.ArgumentNullException("fieldid");
    }
    else {
        this.Adapter.SelectCommand.Parameters[1].Value = ((string)(fieldid));
    }
    RiskAnalysis.responsesDataTable dataTable = new RiskAnalysis.responsesDataTable();
    this.Adapter.Fill(dataTable);
    return dataTable;
}

如果我这样调用这个函数:

string filter_string = @"3\_%";    
ResponsesAdapter.GetResponseGroupForAnalysis(10, filter_string);

MySQL 日志报告查询如下所示:

SELECT     *
FROM         responses
WHERE     (ra_id = 10) AND (field_id LIKE '3\\_%')

换句话说,我知道我在这里遗漏了一些非常明显的东西,但是我如何在查询中放置 MySQL 的转义反斜杠而不用 C#(un)帮助转义它?

最佳答案

在标准 SQL 中,您可以使用 ESCAPE 关键字来设置转义字符。

MySQL 在这方面遵循标准 SQL,如 LIKE 谓词文档所述:

像这样:

...

field_id LIKE '3\_%' ESCAPE '\' 

这将使通配符 _ 被视为字符串文字。

希望这就是你所问的。

关于c# - 在 c# 的 MySQL 查询中使用文字下划线字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13268907/

相关文章:

c# - ASP.NET - 无法将索引 YYY 处的 Unicode 字符 XXX 转换为指定的代码页

php - 通过搜索关键字查找用户并返回结果与共同 friend 的订单

html - Grails和HTML编纂

sql - MySQL - 存储过程中的动态 SQL

python - 强制 repr() 使用单引号

curl - 如何在 curl 命令的标题中转义特殊字符

c# - 使用 GetPixel() 查找彩色区域的最大宽度和最大高度相交的像素

c# - .NET 中是否有 SortedList<T> 类?

c# - 是否可以在 Unity 编辑器中选择性地阻止某些程序集的重新加载?

mysql - 在 Rails 中连接两个表,但不在主键上连接