如何在QueryExecute sql语句中正确转义冒号?

时间:2018-11-14 20:45:01

标签: coldfusion cfml coldfusion-2016

更新:对这个答案不满意,但是我发现不传递参数结构将导致CF2016忽略冒号。看起来CF2018两种方式都没有问题(尽管目前我只能用查询查询来测试)。

我们生成了不使用通过QueryExecute()进行查询的参数的sql查询。有时我会看到错误在参数前缀':'之后不允许空格,并发现它是由带有冒号和空格的字符串文字引起的。例如:

select 'test this: error'

我找不到逃脱结肠的官方方法,普通的逃脱方法也行不通,但找出了解决方法...

sqlstring = replace(sqlstring, ": ", ":'+' ", "all")

但是,这并不能解决可能出现的其他情况,这些情况不是字符串文字,例如带有冒号和空格的列名,而且可能还有我现在想不到的更多情况。

>

是否有逃脱传递给QueryExecute而不是queryparam的冒号的官方方法?

1 个答案:

答案 0 :(得分:0)

我想您可以将字符串分离出来并传递进来

result = QueryExecute("
  SELECT :mystring AS ...
  ",
  { mystring : "test this: error"}
  );

不过似乎需要做很多工作。