格式化多值SSRS参数

时间:2016-11-07 21:27:27

标签: sql sql-server reporting-services

我正在尝试通过SSRS将多个值传递给查询。它们是没有前导零的ID。我想添加前导零,以便ID中的总位数为7.(87886,88352)变为(0087886,0088352)。我有想法使用光标或将其放入临时表中,但无论我想做什么,我都会遇到同样的问题,即我对ID列表的处理不多。无论我尝试什么,在某些时候我都需要动态处理列表。动态附加零,计算值或将它们作为行添加到表中。无论如何,我只是不确定如何以这种方式处理来自SSRS的列表。

SELECT * FROM PERSON WHERE ID IN (RIGHT('0000000' + @pIDs,7))

这就是我想要的想法,其中@pIDs是来自SSRS的列表。

2 个答案:

答案 0 :(得分:0)

尝试从数据中删除前导零:

SELECT * 
FROM PERSON 
WHERE -1 < CHARINDEX(',' + CAST(CAST(ID AS INT) AS VARCHAR(7)) + ',', ','+@pIds+',')

答案 1 :(得分:0)

首先,请注意数据类型:

RIGHT('0000000' + @pIDs,7)

是整数。您的ID列可能不属于int类型,因为您可以在&#39; 0087886&#39;格式。

其次,请注意,例如

select RIGHT('0000000' + 14,7)

返回14而不是0000014。