使用正则表达式在实体框架中搜索
我想在数据库表中搜索字符串模式。使用正则表达式在实体框架中搜索
搜索模式只是用户输入的字符串。但是,要搜索的字段之间可以有空格,否则用户可能会在字符串中输入空格。
所以我想创建一个正则表达式,例如,如果说字符串为“测试”, 我期待已久的正则表达式可能有空格之间,像这样
T[\s]*e[\s]*s[\s]*t.
任何人都可以请建议如何我可以在Entity框架中做到这一点 - 或通过使用ESQL?
对于这种模式,你不需要一个正则表达式。你最好把它们剪掉,然后做搜索。你可能是这样的:
SELECT * FROM MyTable
WHERE REPLACE(MyColumn, ' ', '') LIKE '%' + REPLACE(@YourVariable, ' ', '') + '%'
这只能解决问题的一半。它会在数据库中找到没有空格的记录。不过用户可能会输入一个空格的记录 - 并且他可以在任何字符之后放置空格。然后,这个搜索将不起作用。这就是为什么需要正则表达式。 – gunnerz 2013-04-25 08:18:32
@gunnerz然后我们可以把列中的空格也列出来,所以两者都是平等的比较。检查我更新的编辑。我已经为两者添加了修剪。 – mattytommo 2013-04-25 08:23:44
谢谢这个作品!我不确定搜索的效率如何。另外我猜测在实体框架中使用它是唯一通过ESQL。 – gunnerz 2013-04-25 09:03:30
空格是你需要使用正则表达式的唯一原因吗?您可以从字段和搜索条件中删除所有空格,然后进行比较。 – ckal 2013-04-24 18:08:16
我无法从数据库中的字段中删除空格 - 因为用户输入它 - 并且要求将其保留原样。 – gunnerz 2013-04-25 08:20:45