Логический подход скрытых параметров SSRS для значений STRING - PullRequest
0 голосов
/ 12 февраля 2019
DECLARE @rpmProvider varchar(MAX) = 'Prudhvi, raj,Lalith, Kumar';


CREATE TABLE #PrvFilt(ID varchar(50))
DECLARE @xml xml
BEGIN
   SET @xml = cast(('<X>' + @rpmProvider + '</X>') as xml)
   INSERT INTO #PrvFilt (ID)
   SELECT N.value('.', 'varchar(50)') as value
   FROM @xml.nodes('X') as T(N);
END;

SELECT  * from #PrvFilt
DROP TABLE #PrvFilt

Фактический выход:

Прудхви, Радж, Лалит, Кумар

Ожидаемый результат:

  1. ПрудхвиРадж
  2. Лалит, Кумар

1 Ответ

0 голосов
/ 12 февраля 2019

Проблема с вашим запросом состоит в том, что вы не разделяете отдельные имена с помощью XML.

К сожалению, ваши имя и фамилия разделены запятыми, а все имена также разделены запятыми.

ЕСЛИ ваши имя и фамилия будут ВСЕГДА иметь запятую и пробел , но целые имена будут отделяться только запятой,тогда это должно работать.

DECLARE @rpmProvider varchar(MAX) = 'Prudhvi, raj,Lalith, Kumar';

DECLARE @xml xml
DECLARE @XMT_TEXT AS VARCHAR(200)

SET @XMT_TEXT = REPLACE(REPLACE(REPLACE(@rpmProvider, ', ', '|'), ',', '</X><X>'), '|', ', ')
SET @xml = cast(('<X>' + @XMT_TEXT + '</X>') as xml)


SELECT N.value('.', 'varchar(50)') as value
FROM @xml.nodes('X') as T(N);
...