更新:对这个答案不满意,但我发现不传递参数结构会导致 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/