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

更新:对这个答案不满意,但我发现不传递参数结构会导致 CF2016 忽略冒号。看起来 CF2018 没有任何问题(尽管我目前只能通过查询查询来测试)。

我们生成的 sql 查询不使用通过 QueryExecute() 的查询参数。我有时会看到错误 Space is not allowed after parameter prefix ':' 并发现它是由带有冒号和空格的字符串文字引起的。例如:

select 'test this: error'

我找不到正式的方式来转义冒号,而且常见的转义方式也行不通,但我想出了这个解决方法...

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

然而,这并没有考虑到可能出现的其他情况,这些情况不是字符串文字,例如带有冒号和空格的列名,可能还有更多我目前无法想到的情况。

是否有官方方法来转义传递给 QueryExecute 而不是 queryparam 一部分的冒号?

最佳答案

我想你可以把字符串分开然后传入

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

虽然看起来工作量很大。

https://stackoverflow.com/questions/53308446/

相关文章:

c# - 如何自定义渲染 UWP 湿墨

javascript - 目前是否有将两个或多个字符串文字类型连接到 TypeScript 中的单个

java - 环境变量中的数据库凭据?

python - 尝试使用 Cloud TPU 恢复更新的 BERT 模型检查点时出现 Infeed

tensorflow - Tensorflow 中的回调

python - 更新 PyTorch 中的特定向量元素

polygon - 使用多边形形状创建和监控地理围栏

javascript - 在浏览器中运行开发服务器 [如 stackblitz/codesandbo

python - 为什么 python 日志记录日志文件不按顺序?

xcode - faSTLane 创建的 .cer 和 .mobileprovision 文件应该存