如何处理可能在SQL Server中有撇号的传递参数?

时间:2018-03-06 19:54:16

标签: sql-server string-formatting jscript testcomplete ssms-2016

我在TestComplete的循环中使用查询,每次循环完成时,变量都会使用新值更新。我想说明变量中撇号的可能性,所以我可以使用一个查询。例如:

i = 0;

while(i < companyCount)
{                             
    result = CompanyAddress(company);
    Log.Message(result);
    i++;
}

&#39;公司地址&#39;是我存储在另一个脚本文件中的查询,&#39; company&#39;是传递的变量。

SELECT address FROM table WHERE name = '" + company + "';

我尝试了REPLACE(),但在第二次迭代时没有解决问题。

2 个答案:

答案 0 :(得分:-1)

要在SQL字符串中转义撇号,请使用双撇号:

SET @name = "Dan''s example"

但最好的方法是参数化查询,这也会阻止SQL注入。

答案 1 :(得分:-2)

我错误地使用了我在初步解释中提到的REPLACE()方法。

我将带有单引号的变量发送到查询:

var test = "agwh'waf'2";

但是当我将它包含在查询中时,我使用了以下内容:

"select * from table where name = " + test.replace(/'/g, "\'\'");

在查询运行之前,我用变量中的两个单引号替换了单引号。