【问题标题】:issues with finding data with certain strings查找具有某些字符串的数据的问题
【发布时间】:2011-10-13 19:32:16
【问题描述】:

我正在尝试完成这项工作,但不幸的是它给了我以下错误

Error in Like operator: the string pattern '%testing : | / - “ ‘ & * # @%' is invalid.

只要不包含上述字符串,此搜索就可以工作。这是我的搜索代码

DataRow[] rows = GetAllItems.Select("Name like '%" + cleanedText + "%'");

我尝试过 - 根据 cHaos 进行了修改(尽管仍然有错误)

  string cleanedText =  SearchText.Replace("\"", "\\\"").Replace("'", "''");

但是当我在搜索中输入以下字符串时没有运气,虽然我知道它在数据中

testing : | / - “ ‘ & * # @%

谁有好的建议

谢谢

【问题讨论】:

  • 您使用的是 SQL 数据库吗?
  • 嗯...这是做什么的? sSearctText.Replace("\"", "\"")?
  • 您确实意识到.Replace("\"", "\"") 没有任何用处,对吧?与所有其他反斜杠替换相同——您将用完全相同的字符替换古怪的字符。你可能想要.Replace("\"", "\\\"") 之类的。
  • sSearchText 是原始变量 - cHao,我使用了 Replace("\"", "\"") 它实际上解决了找不到带有 " 的项目的问题。不知道为什么,但我明白你的意思
  • @cHao & Mark 我改变了 sSearctText.Replace("\"", "\"")?到 sSearctText.Replace("\"", "\\\"")?仍然是同样的错误。

标签: c# asp.net escaping


【解决方案1】:

在 LIKE 比较中,% 和 * 可以互换用于通配符。

因此,您需要将这些字符括在表达式字符串中的方括号中,如下所示:

Name like '%testing : | / - “ ‘ & [*] # @%'

DataColumn.Expression

从上面的链接:

通配符

* 和 % 可以互换用于通配符 在 LIKE 比较中。如果 LIKE 子句中的字符串包含 * 或 %,这些字符应括在方括号 ([]) 中。如果一个括号 在子句中,每个括号字符都应包含在 括号(例如 [[] 或 []])。

【讨论】:

  • 谢谢 jdavies 先生,这对我帮助很大。 :)
猜你喜欢
  • 1970-01-01
  • 2014-11-19
  • 2021-02-25
  • 2014-07-31
  • 1970-01-01
  • 2023-02-02
  • 1970-01-01
  • 2023-03-10
  • 1970-01-01
相关资源
最近更新 更多