如何搜索查询结果集中所有字段的内容
本文关键字:字段 集中 结果 何搜索 搜索 查询 | 更新日期: 2023-09-27 18:29:50
我正在尝试创建一个通用搜索功能,该功能将搜索结果集中每个字段的内容。
例如,如果我要在TSQL中编写一个函数,该函数返回一个包含100行和字段TicketID
、FirstName
、LastName
和Comment
的结果集,我想在这些字段中的每个字段中搜索字符串"Mike"的每条记录。
因此,从本质上讲,如果"Mike"这个词出现在这些字段中的任何一个字段中,该记录都将包含在我的搜索中。
我该怎么做?
您可以创建一个完整的全文索引。您可以通过视图为整个表或表中选定的列设置此索引。http://msdn.microsoft.com/en-us/library/ms142575.aspx#examples它有自己的语法,但它是TSQL查询的一部分,可以与常规列搜索相结合。
该方法的条目将是一个带有查询执行结果集的DataTable。然后,您需要以这种方式对行和列进行迭代:
foreach (DataRow dr in yourDataTable.Rows)
{
foreach(DataColumn col in yourDataTable.Columns)
{
try
{
if (dr[col].ToString().Contains("Mike"))
{
//Save this one!
}
}
catch
{
//it was not a string, go on then.
}
}
}
或者您可以使用SqlMethods.Like方法,这样您就可以在表达式中搜索特定的模式。
类似这样的东西:
where SqlMethods.Like(str,"%Mike%");
希望这能有所帮助!
from x in someTableOrQuery
where x.FirstName.Contains(str) || x.LastName.Contains(str) || ...
select x
这只是普通的C#。不需要任何技巧。
请注意,这将转换为SQL中的LIKE表达式。但您不需要手动串接,这很容易出现错误(在这种情况下不需要SQL注入)。