You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Asp Classic中SQL Server LIKE查询字符串失效,数字查询正常问题

解决ASP Classic中LIKE查询字符串无结果的问题

我看了你的代码,问题出在SQL语句的字符串拼接上,咱们一步步来修正:

1. 修复字符串拼接错误

你原来的SQL语句写法不对,导致search变量没有正确嵌入到LIKE的通配符中。VBScript里字符串连接要用&,而且要把变量从双引号包裹的SQL字符串里拆出来,正确的写法应该是:

<% 
strsql = "SELECT * FROM News WHERE Article_Name LIKE '%" & search & "%' ORDER BY Article_date DESC"
%>

原来的写法里,'% & search & %'是作为整个字符串字面量传入SQL的,数据库其实在搜索包含& search &的内容,自然找不到你要的结果;而搜索数字时可能是巧合(比如你的Article_Name里恰好有类似字符),但本质上这个写法是错误的。

2. 更安全的做法:使用参数化查询

直接拼接用户输入到SQL里会有SQL注入的风险,推荐用ADODB.Command来做参数化查询,既安全又能避免字符串拼接的引号问题,代码示例:

<% 
search = Request.Form("search")
Set cmd = Server.CreateObject("ADODB.Command")
cmd.ActiveConnection = cn
cmd.CommandText = "SELECT * FROM News WHERE Article_Name LIKE '%' + ? + '%' ORDER BY Article_date DESC"
cmd.Parameters.Append cmd.CreateParameter("search", 200, 1, 255, search) ' 200对应adVarChar类型
Set rs = cmd.Execute
rs.CursorLocation = 3
rs.PageSize = 4
%>

这里用?作为占位符,通过参数传递用户输入,完全避免了SQL注入风险,也不用再纠结引号拼接的问题。

3. 额外注意事项

  • 确保Article_Name字段是字符串类型(比如varchar、nvarchar),非字符串类型会导致匹配逻辑异常;
  • 如果需要支持中文搜索,要保证数据库字符集和ASP页面编码一致,避免乱码导致搜索不到结果。

内容的提问来源于stack exchange,提问作者Hamed Kermani

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 06:51:31