查询与空字符串不匹配的查询



我有一个来自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>

最新更新