我有以下代码:
SELECT ItemName
FROM skuDetails
WHERE skuDetails.SkuNumber = '" & search & "'
OR
skuDetails.ItemName = '%' + @search + '%'"
基本上我有一个项目数据库,每个项目都有一个“SKU编号”,这是每个项目的唯一编号。在VB.NET中,我有一个表单,您可以在其中键入SKU编号或项目名称到文本框中,然后按Enter键在数据库中搜索该编号或与您搜索的编号类似的名称。
上面代码中的“搜索”变量是用户搜索的文本框中的文本。
第一个WHERE语句有效,但OR之后没有。我希望它与我如何使用通配符有关。这个陈述有什么问题吗?
提前致谢!
答案 0 :(得分:4)
要使用通配符,您必须说LIKE '%' + @search + '%'
但是要小心,使用这种代码可以打开SQL注入攻击。
答案 1 :(得分:4)
您应该使用LIKE
而不是equals运算符才能使用模式匹配:
OR skuDetails.ItemName LIKE '%' ...
MSDN: Pattern Matching in Search Conditions
LIKE关键字搜索字符串,日期或时间值 匹配指定的模式。有关更多信息,请参阅数据类型 (的Transact-SQL)。 LIKE关键字使用正则表达式来包含 值匹配的模式。该模式包含 要搜索的字符串,可以包含任何组合 四个通配符