【发布时间】:2019-07-31 09:33:51
【问题描述】:
我的数据库 (SQL Server) 中有一个类型为 nvarchar(max) 的字段,其值为 HTML(比如电子邮件的内容)。
我想通过给定文本搜索这些值。我使用.net core 和Entity framework 进行查询。
当然,我可以简单地使用Contains 函数,但它也包含HTML 标记。例如,如果我搜索文本“strong”,它也会匹配那些具有强 HTML 标记的值,尽管它们的内容中可能没有 strong 这个词,这是不可取的。
var query = _dbContext.Emails.AsQueryable();
// The following code also searches through HTML tags
if(!string.IsNullOrWhiteSpace(searchText))
{
query=query.Where(ent=>ent.Contents.Contains(searchText));
}
有没有一种简单的方法可以避免在搜索中使用 HTML 标记,例如使用 Regex?
更新
理想情况下,当查询是IQueryable 而不是IEnumerable 时,即在调用.ToList() 之前,我想在SQL 服务器端执行此操作。
【问题讨论】:
-
HTML 不是正则的,Regex 是用来解析正则表达式的。所以我们不建议在 html 上使用正则表达式。最好使用 HTML 库从 html 中获取标签/数据。
-
先剥离 html 标签。网络上有很多功能可以做到这一点。
-
也许使用 '>...
-
使用这个SQL函数stackoverflow.com/questions/457701/…