我有一个来自SQL Server上的存储过程的输出,我正在CF9中运行查询查询。我无权访问存储过程以进行任何更改,但可以输出内容。
我的问题是我的 QofQ 在多个字段上匹配,其中一个字段有一条记录,该记录在我正在匹配的其中一个字段中具有空字符串。记录集应返回该记录,但它不是我的记录集的一部分。
<cfquery name="test" dbtype="query">
SELECT *
FROM dataLimited
WHERE market = <cfqueryparam value="" cfsqltype="cf_sql_varchar">
</cfquery>
这将返回零条记录,即使我可以在存储过程的转储中看到该记录。
您确定该字段具有空字符串而不是空字符串吗?CF 在区分 NULL 和空字符串方面做得不好,但查询查询仍然尊重差异。即 使用表达式:
WHERE market IS NULL
我正在循环我的 QofQ 以执行后续 QofQ,在表中创建动态行。因此,我随后的 QofQ 将具有与(可能)NULL 值或非 NULL 值匹配的 WHERE 子句。我的解决方案是检查值的len(),然后在后续查询中使用:
<cfif len(data.market)>
AND market = <cfqueryparam value="#data.market#" cfsqltype="cf_sql_varchar">
<cfelse>
AND market IS NULL
</cfif>