Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 在SQL Server Reporting Services中处理空值_Sql Server_Ssrs 2008_Reporting Services - Fatal编程技术网

Sql server 在SQL Server Reporting Services中处理空值

Sql server 在SQL Server Reporting Services中处理空值,sql-server,ssrs-2008,reporting-services,Sql Server,Ssrs 2008,Reporting Services,我使用SSRS报表生成器开发了一个报表。报表包含多个参数,其中一个参数包含空值,而不是从数据库中获取的值 现在,当我从该参数中选择非空值时,报告运行良好,因为我使用IN子句作为参数值是多选的。但是,当我从该参数中选择NULL而不是任何其他值时,IN子句不起作用,因为IN不接受NULL 因此,我应该如何修改我的查询,使其能够处理空值和非空值?我以前遇到过这个问题 解决方案不是传递NULL,而是传递一个默认值,实际上,您的DB从未使用该值。这并不理想,但似乎是实现的一个怪癖 所以,如果你正在搜索Th

我使用SSRS报表生成器开发了一个报表。报表包含多个参数,其中一个参数包含空值,而不是从数据库中获取的值

现在,当我从该参数中选择非空值时,报告运行良好,因为我使用IN子句作为参数值是多选的。但是,当我从该参数中选择NULL而不是任何其他值时,IN子句不起作用,因为IN不接受NULL


因此,我应该如何修改我的查询,使其能够处理空值和非空值?

我以前遇到过这个问题

解决方案不是传递NULL,而是传递一个默认值,实际上,您的DB从未使用该值。这并不理想,但似乎是实现的一个怪癖

所以,如果你正在搜索ThingId。ThingId是一个代理密钥,我们知道它永远不能大于0

使用0作为any的值,并传递它而不是NULL,然后按如下方式更改查询:-

WHERE
  @ThingId = 0 OR ThingId = @ThingId

以下命令将强制包含所有空值,并向报表用户表明缺少该值:

SELECT ISNULL([ColumnNameHere],'[ None ]') AS [ColumnNameHere]
WHERE ISNULL([ColumnNameHere],'[ None ]') IN (@MultiParam)

我仍然会传递null,你可以这样做:@MyParam=mycl或@MyParam是null,你确定吗,JonH?虽然where子句看起来很好,而且通常也很好,但问题是报告没有发送实际为NULL的值。因此,我使用了你提供的查询,当我选择NULL时,它工作得很好。但当我选择该参数的一个非空值时,它包含该参数的空值记录,而它应该只包含非空记录。这是一种很好的方法。将“[None]”添加到@MultiParam的下拉列表将是一个很好的最后一击。