2011-11-04 66 views
3

我有下面的代碼:在SQL中使用通配符Where語句

SELECT ItemName 
FROM skuDetails 
WHERE skuDetails.SkuNumber = '" & search & "' 
     OR 
     skuDetails.ItemName = '%' + @search + '%'" 

基本上我有項目的數據庫,每個項目都有一個「SKU號」,這是一個唯一的編號爲每個項目。在VB.NET中,我有一個表單,您可以在文本框中輸入SKU編號或項目名稱,然後按回車鍵在數據庫中搜索該編號或與搜索到的名稱類似的名稱。

上面的代碼中的「搜索」變量是用戶搜索的文本框中的文本。

第一個WHERE語句有效,但第二個在OR之後沒有。我期望這與我如何使用通配符有關。那個陳述有什麼不妥?

在此先感謝!

+2

我建議你閱讀:[如何:防止ASP.NET中的SQL注入](HTTP:// MSDN。 microsoft.com/en-us/library/ff648339.aspx)。 – jdavies

回答

4

你應該使用LIKE,而不是爲了使用模式匹配等於運營商:

OR skuDetails.ItemName LIKE '%' ... 

MSDN: Pattern Matching in Search Conditions

爲字符串,日期LIKE關鍵字搜索,或時間值 匹配的是指定模式。有關更多信息,請參閱數據類型 (Transact-SQL)。 LIKE關鍵字使用正則表達式來包含值匹配的模式。該模式包含 字符串搜索,它可以包含任意組合的四個 通配符

+0

它的工作!感謝您的回覆。 – DJDMorrison

4

要使用通配符,你不得不說LIKE '%' + @search + '%'

不過要小心,你打開自己高達SQL注入攻擊與這種代碼。

+0

如果您可以提供一個示例或使用綁定變量的鏈接,對DJDMorrison會有所幫助。 –

+2

jdavies已經在上面的評論中好心地報道了 – Andrew

+0

感謝您的回覆! – DJDMorrison