Sql 允许SSRS多值参数为空字符串

Sql 允许SSRS多值参数为空字符串,sql,stored-procedures,reporting-services,parameters,Sql,Stored Procedures,Reporting Services,Parameters,我有一个SSRS报告,它将一些多值报告参数传递给存储过程以构建报告。当选择该选项时,返回空字符串的值时遇到问题。正如您所看到的,下拉列表中有一个空字符串选项,在选择此空字段时,肯定会返回一些行。该参数设置为允许空白值。该参数在数据集的参数选项中具有逗号连接。我还有一个单独的表值函数,当我试图搜索查询中的特定参数时,会调用该函数 下面是我将通过报告参数选择的位置: where car.Cars in (SELECT Val from [dbo].[fn_String](@localCars,',

我有一个SSRS报告,它将一些多值报告参数传递给存储过程以构建报告。当选择该选项时,返回空字符串的值时遇到问题。正如您所看到的,下拉列表中有一个空字符串选项,在选择此空字段时,肯定会返回一些行。该参数设置为允许空白值。该参数在数据集的参数选项中具有逗号连接。我还有一个单独的表值函数,当我试图搜索查询中的特定参数时,会调用该函数

下面是我将通过报告参数选择的位置:

where car.Cars in (SELECT  Val from [dbo].[fn_String](@localCars,',',1))
调用函数that将SSRS参数值拆分为单独的字符串值:

ALTER FUNCTION [dbo].[fn_String] (
        @String VARCHAR(max), 
@Delimeter char(1),   
@TrimSpace bit )    
RETURNS @Table TABLE ( [Val] VARCHAR(500) )
AS
BEGIN
DECLARE @Val    VARCHAR(500)
WHILE LEN(@String) > 0
BEGIN
    SET @Val    = LEFT(@String,
         ISNULL(NULLIF(CHARINDEX(@Delimeter, @String) - 1, -1),
         LEN(@String)))
    SET @String = SUBSTRING(@String,
         ISNULL(NULLIF(CHARINDEX(@Delimeter, @String), 0),
         LEN(@String)) + 1, LEN(@String))
IF @TrimSpace = 1 Set @Val = LTRIM(RTRIM(@Val))
INSERT INTO @Table ( [Val] )
    VALUES ( @Val )
 END
 RETURN
 END

几周前我也有同样的问题。您确定在传入的每个参数中都有联接吗。那是我的错误,我忘了一两个。JOIN(parameter!paramName.value,“,”)

几周前我也遇到了同样的问题。您确定在传入的每个参数中都有联接吗。那是我的错误,我忘了一两个。联接(参数!paramName.value,“”)