2016-11-07 4 views
0

Я пытаюсь передать несколько значений запросу через SSRS. Это идентификаторы без начальных нулей. Я хочу добавить начальные нули, чтобы суммарные цифры в ID были равны 7. (87886,88352) становится (0087886,0088352). У меня возникла идея использовать курсор или поместить его в временную таблицу, но независимо от того, что я думаю делать, я сталкиваюсь с той же проблемой, где я просто не могу сделать со списком идентификаторов. Независимо от того, что я пытаюсь, в какой-то момент мне придется иметь дело с списком динамически. Либо динамическое добавление нулей, подсчет значений, либо добавление их в виде строк в таблицу. В любом случае, я просто не уверен, как справляться со списком из SSRS таким образом.Форматирование многозначного параметра SSRS

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

Это идея, которой я занимаюсь, где @pIDs - это список из SSRS.

ответ

0

Попробуйте удалить начальные нули из данных вместо:

SELECT * 
FROM PERSON 
WHERE -1 < CHARINDEX(',' + CAST(CAST(ID AS INT) AS VARCHAR(7)) + ',', ','[email protected]+',') 
+0

Мне очень жаль, но я не слежу, как это работает. Я вижу, что вы бросаете каждое индивидуальное значение как int, чтобы удалить ведущие нули, но я не понимаю, как это фактически анализирует каждое значение отдельно. По запятой индекс как-то? – user3908206

0

Во-первых, обратите внимание, что тип данных:

RIGHT('0000000' + @pIDs,7) 

является целым числом. В столбце ID не может быть типа int, потому что вы видите их в формате «0087886».

Во-вторых, обратите внимание, что, например,

select RIGHT('0000000' + 14,7) 

возвращает 14 не 0000014.

Смежные вопросы