【发布时间】:2023-03-26 23:19:01
【问题描述】:
CF 允许查询字符串位于多行上。因此,我将查询字符串存储在多行变量中,例如
var strSQL="select
a.col1,
a.col2,
b.col3,
b.col4,
CASE WHEN Some_XYZ>0.1 THEN 'Y' ELSE 'N' END as kStatus
FROM (A_Derived_Table)
";
这是 REST API 的一部分,查询将花费太长时间或超时(api 服务不返回结果)。为了可读性,我有许多其他查询以相同的方式编写,并且从未遇到过任何问题。 在 sql server 中,相同的查询在一秒钟内运行。 当我修改 API 并返回生成的 sql 时,我注意到很多 \t (tab) 被添加到 sql 字符串中。我将字符串更改为
var strSQL="select a.col1, a.col2, b.col3, b.col4, CASE WHEN Some_XYZ>0.1 THEN 'Y' ELSE 'N' END as kStatus FROM (A_Derived_Table)";
一切都开始运作良好。 什么/为什么是这种行为?环境CF10,IIS7上的SQL server 2008
【问题讨论】:
-
空白不应影响查询性能。看看这个answer 到一个类似的问题。
-
我相信这是在 cfscript 中编写查询的一个已知问题/限制 - Tip using ColdFusion query in cfscript and something to watch out for 和这个类似的问题 - stackoverflow.com/q/8426044/1636917。这里也有提到——Learning ColdFusion 9: Using CFQuery (And Other Service Tags) In CFScript
-
@Miguel-F,谢谢。所以我在黑暗中拍摄,将它们移动到一条线上使其工作,这是由于这个已知的限制。我玩了一下,发现当我从say management studio复制查询并将其放入字符串变量中时,这种行为更加明显,而不是直接在编辑器中输入变量内容。你能把这个作为答案发布吗?所以你提到的问题很相似,但原因不同,症状也不同。