我正在嘗試創建一個通用搜索功能來搜索結果集中每個字段的內容。如何搜索查詢結果集中所有字段的內容?
因此,舉例來說,如果我是寫在TSQL函數返回一個包含100行和領域TicketID
,FirstName
,LastName
和Comment
我想尋找這些領域中的每一個爲每個記錄的結果集字符串'邁克'。
所以基本上,如果單詞'邁克'是在任何這些領域,該記錄將包括在我的搜索。
我該怎麼做?
我正在嘗試創建一個通用搜索功能來搜索結果集中每個字段的內容。如何搜索查詢結果集中所有字段的內容?
因此,舉例來說,如果我是寫在TSQL函數返回一個包含100行和領域TicketID
,FirstName
,LastName
和Comment
我想尋找這些領域中的每一個爲每個記錄的結果集字符串'邁克'。
所以基本上,如果單詞'邁克'是在任何這些領域,該記錄將包括在我的搜索。
我該怎麼做?
你可以創建一個完整的全文索引。您可以通過視圖爲整個表或表中的選定列創建此索引。 http://msdn.microsoft.com/en-us/library/ms142575.aspx#examples它具有它自己的語法,但它是TSQL查詢的一部分,可以與常規列搜索結合使用。
from x in someTableOrQuery
where x.FirstName.Contains(str) || x.LastName.Contains(str) || ...
select x
這只是普通的C#。不需要任何技巧。
請注意,這將轉化爲SQL中的LIKE表達式。但是你不需要做手動字符串連接,這很容易出現錯誤(在這種情況下不是SQL注入)。
或者您可以使用SqlMethods.Like方法,因此您可以搜索表達式以查找特定模式。
事情是這樣的:
where SqlMethods.Like(str,"%Mike%");
希望這有助於!
該方法的條目將是一個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.
}
}
}
x未定義 – Paparazzi 2012-04-04 01:58:45
我改進了示例代碼。 – usr 2012-04-04 09:17:26