如何在 SQL 中使用参数和 LIKE 语句
在 SQL 中,LIKE 语句允许您在字符串中执行模式匹配。然而,如果不采取适当的预防措施,使用它可能会导致 SQL 注入攻击。为了防止此类攻击,可以采用参数化查询。
原始问题
为了限制 SQL 注入漏洞,使用参数构造了以下查询:
SELECT * FROM compliance_corner WHERE (body LIKE '%@query%') OR (title LIKE '%@query%')
但是,在程序中执行此查询不会产生任何结果。参数可以这样使用吗,还是只适用于以下情况:
SELECT * FROM compliance_corner WHERE body LIKE '%<string>%'
解决方案
参数可以按预期在 LIKE 语句中使用。原始查询中的语法不正确。以下是在此场景中使用参数的正确方法:
Dim cmd As New SqlCommand( "SELECT * FROM compliance_corner" _ + " WHERE (body LIKE @query )" _ + " OR (title LIKE @query)") cmd.Parameters.Add("@query", "%" & searchString & "%")
此查询将正确匹配正文或标题字段中包含搜索字符串的字符串。
VB。 NET 注意事项
提供的解决方案对于 VB.NET 在语法上是正确的。但是,实际实现可能会有所不同,具体取决于所使用的特定数据库提供程序和连接方法。请参阅相应的文档以获取进一步的指导。
以上是SQL中的LIKE语句可以使用参数进行模式匹配吗?的详细内容。更多信息请关注PHP中文网其他相关文章!