繁体   English   中英

在SQL Where语句中使用通配符

[英]Using Wildcards in SQL Where statement

我有以下代码:

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

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

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

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

提前致谢!

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

但是要小心,使用这种代码可以让自己接受SQL注入攻击。

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

OR skuDetails.ItemName LIKE  '%' ...

MSDN:搜索条件中的模式匹配

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM