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

时间:2016-05-30 01:52:36

标签: sql stored-procedures coldfusion qoq

我有一个SQL Server上的存储过程的输出,我在CF9中运行查询查询。我没有任何访问存储过程的权限进行任何更改,但我可以输出内容。

我的问题是我的QofQ在几个字段上匹配,其中一个字段的记录在我匹配的其中一个字段中有一个空字符串。记录集应该返回该记录,但它不是我的记录集的一部分。

<cfquery name="test" dbtype="query">
SELECT * 
FROM dataLimited
WHERE market = <cfqueryparam value="" cfsqltype="cf_sql_varchar">
</cfquery>

这会返回零记录,即使我可以在存储过程的转储中看到记录。

2 个答案:

答案 0 :(得分:5)

您确定该字段是否为空字符串,而不是null? CF没有很好地区分NULL和空字符串,但查询查询still respects the difference。即使用表达式:

WHERE market IS NULL

答案 1 :(得分:0)

我正在循环我的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>