2

我开始的查询有 40,000 行空行,这源于原始电子表格的问题。

使用CF16服务器

我想对一个可变名称的“键列”进行查询。

在我的查询中:

var keyColumn = "Permit No."

var newQuery = "select * from source where (cast('#keyColumn#' as varchar) <> '')";

注意:演员表来自这个建议

我仍然在那里得到所有那些空白的字段。

但是当我使用“City”作为 keyColumn 时,它可以工作。当它们在查询转储中都说 [空字符串] 时,这两列中的值有何不同?

与查询的两个查询的输出比较

列名有问题吗?这些单元格中有哪些类型的数据?

4

1 回答 1

3

where ( cast('Permit No.' as varchar) <> '' )

问题是 SQL,而不是值。通过将列名括在引号中,您实际上是在比较文字字符串“Permit No-.”,而不是该列中的值。由于字符串“许可证号”。永远不能等于空字符串,比较总是返回 true。这就是结果查询仍然包含所有行的原因。

除非在 ColdFusion 2016 中修复,否则 QoQ 不支持包含无效字符(如空格)的列名。一种解决方法是在读取电子表格时使用“columnNames”属性来指定有效的列名。如果做不到这一点,另一种选择是利用查询列是数组这一事实,并在有效列名下复制数据:(queryAddColumn(yourQuery, "PermitNo", yourQuery["Permit No."])尽管后一种选择不太理想,因为它可能需要在内部复制基础数据):

于 2016-08-10T00:42:01.917 回答