在SQL Where语句中使用通配符

时间:2011-11-04 12:57:35

标签: sql wildcard where

我有以下代码:

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

基本上我有一个项目数据库,每个项目都有一个“SKU编号”,这是每个项目的唯一编号。在VB.NET中,我有一个表单,您可以在其中键入SKU编号或项目名称到文本框中,然后按Enter键在数据库中搜索该编号或与您搜索的编号类似的名称。

上面代码中的“搜索”变量是用户搜索的文本框中的文本。

第一个WHERE语句有效,但OR之后没有。我希望它与我如何使用通配符有关。这个陈述有什么问题吗?

提前致谢!

2 个答案:

答案 0 :(得分:4)

要使用通配符,您必须说LIKE '%' + @search + '%'

但是要小心,使用这种代码可以打开SQL注入攻击。

答案 1 :(得分:4)

您应该使用LIKE而不是equals运算符才能使用模式匹配:

OR skuDetails.ItemName LIKE  '%' ...

MSDN: Pattern Matching in Search Conditions

  

LIKE关键字搜索字符串,日期或时间值   匹配指定的模式。有关更多信息,请参阅数据类型   (的Transact-SQL)。 LIKE关键字使用正则表达式来包含   值匹配的模式。该模式包含   要搜索的字符串,可以包含任何组合   四个通配符