Sql 空字符串查询的Coldfusion查询

Sql 空字符串查询的Coldfusion查询,sql,coldfusion,qoq,Sql,Coldfusion,Qoq,我开始使用的查询有40000行空行,这是由于获取查询的原始电子表格存在问题 使用CF16服务器 我想对一个名称可变的“键列”进行查询 在我的问题中: var keyColumn=许可证编号 var newQuery=从源中选择*并将“keyColumn”转换为varchar 注:铸件来源于建议 我仍然有那些空字段在那里 但当我使用城市作为键列时,它就起作用了。当这两列在查询转储上都说[empty string]时,它们的值有何不同 列名有问题吗?这些单元格中有什么样的数据 其中“许可证号”为va

我开始使用的查询有40000行空行,这是由于获取查询的原始电子表格存在问题

使用CF16服务器

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

在我的问题中:

var keyColumn=许可证编号

var newQuery=从源中选择*并将“keyColumn”转换为varchar

注:铸件来源于建议

我仍然有那些空字段在那里

但当我使用城市作为键列时,它就起作用了。当这两列在查询转储上都说[empty string]时,它们的值有何不同

列名有问题吗?这些单元格中有什么样的数据

其中“许可证号”为varchar

问题在于SQL,而不是值。通过将列名括在引号中,实际上是在比较文本字符串P-e-r-m-i-t N-o-,而不是该列中的值。由于字符串许可证号永远不能等于空字符串,因此比较总是返回true。这就是结果查询仍然包括所有行的原因


除非在ColdFusion 2016中修复,否则QoQ不支持包含空格等无效字符的列名。一种解决方法是在阅读电子表格时进行调整。如果做不到这一点,另一种选择是利用查询列是数组这一事实,并在有效列名下复制数据:queryAddColumnyourQuery、PermitNo、yourQuery[许可证号]尽管后一个选项不太理想,因为它可能需要在内部复制基础数据:

如果尝试col不为NULL,会有什么不同?这些单元格中有什么样的数据?将其转储并找出答案。类似于writeDumpyourQuery.columnName[rowNum].getClass.name的内容。还可以检查值的长度,看看它是否真的是空字符串。@Leigh java.lang.string在类似23的单元格中,带有[empty string]。不为空检查未更改任何内容。感谢您指出getClass functionEdit除了验证值长度实际上是0之外,您确定SQL是有效的吗?问这个问题的原因是我记不起这是否是从我的头顶上转义QoQ中无效列名的正确方法。@Leigh我尝试在“许可证号”>1上进行字符长度、字符长度、长度和长度检查,但这些检查给了我语法错误?甚至当我选择“承包商”时,它也会给我空的。City也是java.lang.String。我应该先重命名列吗?重建查询?编辑:您不能使用QoQ功能支持很少。对单个值使用LEN函数,即LEN queryName[colName][rowNum]。顺便说一句,你看到了吗?我最终重命名了列,查询的效果更好,得到的是80行而不是42000行。很高兴听到这个消息。听起来,限制查询中返回的列有一个额外的好处,那就是排除了那些碰巧包含所有这些空单元格的附加值-