我正在尝试使用参数化SQL在vbscript中创建LIKE SQL语句。
传递的命令文本沿着
行SET NOCOUNT ON;
DECLARE @pname as nvarchar(50);
SELECT @pname = ?;
SELECT *
FROM tblProject
WHERE projName LIKE @pname
我将%连接到我正在作为pname传递的字符串的两边。如果我将LIKE更改为=并删除%s,那么它可以正常工作。如果我直接运行语句并用'%searchterm%'替换 @pname ,它可以正常工作。任何帮助将非常感激。
编辑:vbscript:
Set rsAnswers = Server.CreateObject("ADODB.Recordset")
Set cmd = server.createobject("ADODB.Command")
cmd.CommandText = mySQL
cmd.CommandType = 1
cmd.CommandTimeout = 900
cmd.ActiveConnection = svrPerformanceConnectionset prm = cmd.CreateParameter("@pname", 129, 1, 50, thisProjName)
cmd.Parameters.Append prm
rsAnswers.CursorLocation = 3
rsAnswers.Open cmd, , 0, 1
(thisProjName从表单中获取字符串)
谢谢, 添
答案 0 :(得分:0)
这是预期的行为,因为参数值被转义以将其作为值处理。
解决方案是将%
的串联移出参数:
SET NOCOUNT ON;
SELECT *
FROM tblProject
WHERE projName LIKE '%' + @pname + '%';
注意缺少的声明&参数的初始化:在脚本中创建相关对象时,VBScript引擎和数据访问层执行inizialization和value assignement。
答案 1 :(得分:0)
在尝试了很多东西后,我发现问题是我将参数声明为的数据类型。我不确定为什么,但使用adVarChar(200)而不是adChar(129)使LIKE语句正常工作。
感谢所有回答和评论的人!