SQL'STUFF'语句建议

时间:2010-12-09 15:17:39

标签: sql database split

我需要从符合要求的表中选择所有行,但是要将这些行放入一个用空格/逗号分隔的列中。现在,我在我的询问中有这个:

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

问题是,它没有任何结果,所以它看起来像一个结果。我哪里错了?

由于

1 个答案:

答案 0 :(得分:3)

我猜你的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