2011-11-04 85 views
0

我想從winforms中的訪問2010數據庫中進行子字符串搜索。使用通配符查詢訪問

command.Parameters.AddWithValue("@searchTerm", searchTerm); 
command.CommandText = "SELECT [OA_Name] FROM [Operating_Authority_Table] WHERE [OA_Name] = [@%searchTerm%]"; 

我試圖做一個完整的字符串搜索,能做到這一點,但是當我改變項是一個子,我不能得到任何成功的搜索。

我是否錯誤地實現了通配符?

回答

4

嘗試是這樣的:

command.Parameters.AddWithValue("@searchTerm", searchTerm); 
command.CommandText = "SELECT [OA_Name] FROM [Operating_Authority_Table] WHERE [OA_Name] = '%' + @searchTerm + '%'"; 
+0

嗯這個工程!謝謝! – user776914

+0

如果它可以隨意標記爲答案=) –

+0

btw給可能有類似問題的人,我試過並發現'%'有效,'*'不起作用。 – user776914

1

嘗試使用SQL LIKE Operator

command.CommandText = "SELECT [OA_Name] FROM [Operating_Authority_Table] WHERE [OA_Name] LIKE '%"+ searchTerm +"%'"; 
+0

我已經使用了=和LIKE,併爲我工作,當我試圖做完整的字符串匹配。 – user776914

1

接受的答案:

"...WHERE [OA_Name] = '%' + @searchTerm + '%'"; 

這將%字符當作文本文字。

我有些吃驚,因爲問題標題中的「通配符」一詞表明模式匹配的意圖。如果情況確實如此,我建議用ALIKE運營商替代=等號運營商。

"...WHERE [OA_Name] ALIKE '%' + @searchTerm + '%'"; 

LIKE運營商的問題是,Jet數據庫引擎(ACE,李連杰,等等)使用不同的通配符取決於所謂ANSI Query Mode。假設您使用ANSI-92查詢模式,暗示使用SqlOleDb(但您肯定知道嗎?)

ALIKE的優點是,無論ANSI查詢模式如何,它都使用相同的「標準」通配符多個字符爲%,單個字符爲_