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