【问题标题】:Search using Regex in Entity Framework在实体框架中使用正则表达式进行搜索
【发布时间】:2013-04-24 17:25:47
【问题描述】:

我想在数据库表中搜索字符串模式。

搜索模式只是用户输入的字符串。但是,要搜索的字段之间可以有空格,或者用户可以在字符串中输入空格。

所以我想创建一个正则表达式,如果说字符串是“Test”, 我寻找可能有空格的正则表达式,像这样

T[\s]*e[\s]*s[\s]*t.

谁能建议我如何在实体框架中执行此操作 - 或使用 ESQL?

【问题讨论】:

  • 空格是您需要使用正则表达式的唯一原因吗?您可以从字段和搜索条件中删除所有空格,然后进行比较。
  • 我无法从数据库中的字段中删除空格 - 因为用户输入了它 - 并且要求保持原样。

标签: sql entity-framework sql-server-2008 entity-sql


【解决方案1】:

对于该模式,您不需要正则表达式。您最好将它们修剪掉,然后进行搜索。你可以这样:

SELECT * FROM MyTable
WHERE REPLACE(MyColumn, ' ', '') LIKE '%' + REPLACE(@YourVariable, ' ', '') + '%'

【讨论】:

  • 这只能解决一半的问题。如果没有空格,它将在数据库中查找记录。但是,用户可能会输入带有空格的记录 - 他可以在任何字符后放置空格。这个搜索将不起作用。这就是需要正则表达式的原因。
  • @gunnerz 然后我们也可以从列中取出空格,所以两者是相等的比较。检查我更新的编辑。我为两者都添加了装饰。
  • 感谢这项工作!我不确定搜索的效率如何。另外我猜想在实体框架中使用它的唯一方法是通过 ESQL。
猜你喜欢
  • 1970-01-01
  • 2014-10-21
  • 2020-10-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-02-18
  • 1970-01-01
  • 2018-11-21
相关资源
最近更新 更多