coldfusion - 如何在 QueryExecute sql 语句中正确转义冒号?
问题描述
更新:对这个答案不满意,但我发现不传递参数结构会导致 CF2016 忽略冒号。看起来CF2018无论哪种方式都没有问题(尽管我目前只能通过查询查询来测试)。
我们生成了不使用查询参数的 sql 查询QueryExecute()
。我有时会看到错误Space is not allowed after parameter prefix ':'并发现它是由带有冒号和空格的字符串文字引起的。例如:
select 'test this: error'
我无法找到逃避冒号的官方方法,常见的逃避方法也不起作用,但想出了这个解决方法......
sqlstring = replace(sqlstring, ": ", ":'+' ", "all")
然而,这并没有考虑到可能出现的其他情况,这些情况不会是字符串文字,例如带有冒号和空格的列名,并且可能还有更多我目前无法想到的情况。
有没有官方的方法来逃避传递给QueryExecute
不属于a 的冒号queryparam
?
解决方案
我想您可以将字符串分开并传入
result = QueryExecute("
SELECT :mystring AS ...
",
{ mystring : "test this: error"}
);
不过似乎工作量很大。
推荐阅读
- azure - Azure 数据工厂中的缓存查找属性
- python - 如何使用2个数据框的交集作为索引,然后再除以另一个
- javascript - 在按钮上单击选中标记/勾选标记单击时选定的下拉选项显示活动的勾选标记
- c# - 发生模型绑定错误时,ASP.NET WebAPI 全局错误处理过滤器不起作用
- docker - 在 docker compose /bin/sh: 1: main: not found 中找不到可执行文件
- apache-spark - Spark 与 S3 的集成
- xampp - 本地主机 phpmyadmin 中的问题。使用模板缓存时出错
- c# - 从 xml 文件复制数据并粘贴到同一文件中并使用 FIle.Copy() 覆盖
- python - 如何下载带有 requests.get 的文件以获得“匹配的 url 模式”,而不是提供确切的 url
- linux - Samba(v 4.10.16) win10无法打开centos7中通过setxattr()设置扩展属性的文件(如.xlsx .pptx)