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

Sql 查询与空字符串不匹配的查询,sql,stored-procedures,coldfusion,qoq,Sql,Stored Procedures,Coldfusion,Qoq,我有一个SQL Server上存储过程的输出,我正在运行CF9中的查询查询。我没有对存储过程进行任何更改的权限,但我可以输出内容 我的问题是,我的QofQ在多个字段上匹配,其中一个字段中有一个记录,在我匹配的字段中有一个空字符串。记录集应返回该记录,但它不是我的记录集的一部分 <cfquery name="test" dbtype="query"> SELECT * FROM dataLimited WHERE market = <cfqueryparam value=""

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

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

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

选择*
来自数据有限公司
其中市场=

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

是否确定该字段具有空字符串且不为null?CF并不能很好地区分空字符串和空字符串,而是查询的查询。i、 e.使用以下表达式:

WHERE market IS NULL

是否确定该字段具有空字符串且不为null?CF并不能很好地区分空字符串和空字符串,而是查询的查询。i、 e.使用以下表达式:

WHERE market IS NULL

我在QofQ上循环以执行后续QofQ,在表中创建动态行。因此,我的后续QoFQ将具有WHERE子句,这些子句将匹配(可能)空值或非空值。我的解决方案是检查值的len(),然后在后续查询中使用:

<cfif len(data.market)> 
AND market = <cfqueryparam value="#data.market#" cfsqltype="cf_sql_varchar"> 
<cfelse> 
AND market IS NULL 
</cfif>

和市场=
市场是空的

我正在循环我的QofQ以执行后续的QofQ,在表中创建动态行。因此,我的后续QoFQ将具有WHERE子句,这些子句将匹配(可能)空值或非空值。我的解决方案是检查值的len(),然后在后续查询中使用:

<cfif len(data.market)> 
AND market = <cfqueryparam value="#data.market#" cfsqltype="cf_sql_varchar"> 
<cfelse> 
AND market IS NULL 
</cfif>

和市场=
市场是空的

它真的是空的吗?或者它可能有空格吗?当我从SP转储结果时,值为[empty string]它确实是空的吗?或者它可能有空格吗?当我从SP转储结果时,值为[empty string]OK,这就是问题所在,但我不确定如何解决它。如果我的where子句是:where market为NULL,那么我将获得记录。考虑到QoQ的限制,是否有办法将QofQ中的空值转换为空字符串?这只能在db查询/过程中完成,或者手动循环查询并覆盖每个值。但是,如果
其中Col为NULL
返回预期的记录,为什么需要将它们转换为空字符串?只需使用
为空
。如果出于某种原因,您想同时提取空字符串和空字符串,请在
WHERE
条件中使用
运算符使用这两个筛选器。@Nathaniel,您可以在初始数据库查询中使用
coalesce(market“”)as market
将这些空字符串转换为空字符串,但这可能不是最好的方法。我建议坚持使用
市场为空或市场='
好的,这就是问题所在,但我不确定如何解决它。如果我的where子句是:where market为NULL,那么我将获得记录。考虑到QoQ的限制,是否有办法将QofQ中的空值转换为空字符串?这只能在db查询/过程中完成,或者手动循环查询并覆盖每个值。但是,如果
其中Col为NULL
返回预期的记录,为什么需要将它们转换为空字符串?只需使用
为空
。如果出于某种原因,您想同时提取空字符串和空字符串,请在
WHERE
条件中使用
运算符使用这两个筛选器。@Nathaniel,您可以在初始数据库查询中使用
coalesce(market“”)as market
将这些空字符串转换为空字符串,但这可能不是最好的方法。我建议坚持使用
市场为空或market='
好的,从最初的问题来看,这部分不清楚。在我的QofQ上循环以执行与原始问题无关的后续QofQ,但尽可能避免在循环中查询。因为它需要为每一行执行/构建一个全新的查询,所以效率非常低,而且往往伸缩性很差。在我的QofQ上循环以执行与原始问题无关的后续QofQ,但尽可能避免在循环中查询。因为它需要为每一行执行/构建一个全新的查询,所以效率很低,而且扩展性很差。