SQL инструкция STUFF - PullRequest
       0

SQL инструкция STUFF

0 голосов
/ 09 декабря 2010

Мне нужно было выбрать все строки в таблице, соответствующие требованию, но поместить их в один столбец, разделенный пробелом / запятой. Прямо сейчас, у меня есть это среди моего запроса:

  ((SELECT  ' ' + ID
   FROM Items
    WHERE     (Consignment = Consignments.ConsignmentNo) FOR XML PATH('')), 1, 1, '') AS Items

Проблема в том, что результаты не разделяются ничем, поэтому все выглядит как один результат. Куда я иду не так?

Спасибо

1 Ответ

3 голосов
/ 09 декабря 2010

Я предполагаю, что ваш столбец ID - это числовой столбец, а не varchar.Попробуйте использовать ID как varchar или nvarchar.Ваш синтаксис выглядит хорошо, он должен разделяться пробелом.

EX:

Без приведения:

select 1 as Item
into #test
union select 2
union select 3
union select 4
union select 5

select STUFF((SELECT  ' ' + Item
        FROM #test
        FOR XML PATH('')), 1, 1, '')

Выход: 2345

Сприведение:

select 1 as Item
into #test
union select 2
union select 3
union select 4
union select 5

select STUFF((SELECT  ' ' + cast(Item as nvarchar)
        FROM #test
        FOR XML PATH('')), 1, 1, '')

Вывод: 1 2 3 4 5

...