更新
当 '\' 是转义助手时,需要对以下四个字符进行转义 %[]_
- http://msdn.microsoft.com/en-us/library/aa933232(v=sql.80).aspx - 喜欢
- 在 SQL Server 中转义字符串,以便在 LIKE 表达式中使用它是安全的
- 如何在 SQL Server 中转义 _?
问题
尽管我搜索了很多,但在堆栈溢出中我找不到与以下内容完全匹配的问题。
我有一个名为 Log_Description 的数据库列。它有两条记录。
1) “样本百分比值记录”
2)“样品免费记录”
我正在使用 SQL 命令并设置参数,如下所示
commandText = commandText + “Log_Description LIKE @Log_Description”;
command.Parameters.AddwithValue(“@Log_Description”, “%”+obj. LogDescription+”%”);
假设用户输入“%”作为 txtLogDescription 文本框的搜索参数,我只需要显示第一条记录。但目前它正在显示这两个记录。
- 有哪些可能的方法来克服这个问题?
- 还有哪些其他字符可能会导致上述代码出现此类问题?
注意:我不能阻止用户输入“%”作为输入
注意:我使用 SQL Server 作为数据库
编辑:
我现在使用的解决方案是转义转义字符不起作用 - SQL LIKE 运算符
private static string CustomFormat(string input)
{
input = input.Replace(@"\", @"\\");
input = input.Replace(@"%", @"\%");
input = input.Replace(@"[", @"\[");
input = input.Replace(@"]", @"\]");
input = input.Replace(@"_", @"\_");
return input;
}
LINQ方法(性能受到影响)如下
Collection<Log> resultLogs = null;
if (!String.IsNullOrEmpty(logSearch.LogDescription))
{
resultLogs = new Collection<Log>();
var results = from o in logs where o.LogDescription.Contains(logSearch.LogDescription) select o;
if (results != null)
{
foreach (var log in results)
{
resultLogs.Add((Log) log);
}
}
}
else
{
resultLogs = logs;
}