繁体   English   中英

SSRS中的空白

[英]Whitespace in SSRS

我有一部分在SSRS中编写的查询无法正常工作。 情况是,我正在尝试使用列中的值列表创建下拉参数-我们将其称为Column5。 问题在于该列中的某些行为空; 它们不为null,它们完全由空格组成。 因此,它们不会出现在参数值列表中,这意味着这些行将被完全忽略。

我想做的是这样的:
SELECT [...stuff...] CASE WHEN (RTRIM(LTRIM(Column5)) = '') THEN 'None' ELSE Column5 END AS ColumnAlias

我已经尝试了上面的方法和一些变体,但是似乎没有任何效果。

注意:我将上面的查询粘贴到SQL Server中,并且工作正常。 好像SQL Server和SSRS处理空白是不同的。

编辑:显然部分问题是SQL不会基于重命名的列进行过滤。 我将查询粘贴到SQL Server中,并包含WHERE Column5 = 'None' 它没有返回任何行,即使在Column5中有几千行明确表示“无”。 似乎我可能不得不重新考虑我的整个方法。

尝试这个:

SELECT [...stuff...] CASE WHEN LEFT(Column5, 1) = ' ' or RIGHT(Column5, 1) = ' ' THEN 'None' ELSE Column5 END AS ColumnAlias

原因是当您指定条件时,尾随空格将被忽略。 换句话说,“ HI”,“ hi”和“ Hi”(后面有空格)都被认为是相等的。

我知道这是一篇较旧的文章,但以防万一您仍然遇到麻烦...

我已经看到空字符串或空格字符串在不同系统中的处理和标识方式不同(在SSMS中运行Access,SSRS和T-SQL)。 我发现使用len()函数在任何地方都效果很好。 我通常会执行以下操作:

Case 
    When ISNULL(LEN(LTRIM(RTRIM([Column5]))),0) = 0 
        Then 'None' 
        Else [Column5] 
    End

这样,在删除所有的空格后,它会主动寻找并计数字符。

一旦确定了这些字段,就可以将整个查询(假设它不太复杂)放入CTE中并使用最终产品。 这有时比尝试处理数据时要容易得多。

With Selected_Records as (
Select ...
...
)
Select Distinct Column5

From Selected_Records

然后,您可以在派生数据之上添加任何其他条件,排序或聚合,而不会妨碍其派生。 直到CTE中的查询变得非常复杂或使用许多参数(这些是轶事性的观察结果),此方法才能很好地工作。

希望这可以帮助某人。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM