2016-05-25 14 views
0

にスペースを削除する方法:(SQLのXMLパス - テーブルの真ん中

1 ab 
2 xyz 

私は、クエリを使用します。

table

私はこのような出力を取得したいですSQL Server 2012の):

SELECT ID, Name = STUFF((SELECT ' ' + Name 
        FROM [dbo].[a] AS a2 
        WHERE a2.ID = a.ID 
        ORDER BY ID 
        FOR XML PATH('')),1,1,'') 
        FROM [dbo].[a] AS a 
GROUP BY ID 
ORDER BY ID; 

私は結果を得た:

my result

途中の空白を削除するにはどうすればよいですか?

+0

を動作するはずです(データ型はnvarchar(100)など...)のキャストに – gofr1

答えて

0

これは '( ' ... 1,1)の選択から、とかを変更する' だけ' 削除

SELECT ID, Name = REPLACE((STUFF((SELECT ' ' + Name 
         FROM [dbo].[a] AS a2 
         WHERE a2.ID = a.ID 
         ORDER BY ID 
         FOR XML PATH('')),1,1,'')), ' ', '') 
         FROM [dbo].[a] AS a 
group by id 
+0

これは完全に働いた。ありがとう:) – Ann

3

XMLクエリにスペースを追加しないと、途中に空白ができません。空の文字列を単純に追加して、XMLを返さないようにすることができます。

SELECT ID, Name = (SELECT ''+Name --Use empty string instead of space here 
        FROM [dbo].[a] AS a2 
        WHERE a2.ID = a.ID 
        ORDER BY ID 
        FOR XML PATH('')) 
FROM [dbo].[a] AS a 
GROUP BY ID ORDER BY ID; 
+0

これは、2番目の列の最初の文字を切り捨てるので機能しません。結果は次のようになります。1 \t b yz – vamsi

+0

Vamsi私は追加していないので私のクエリを見てSTUFFを削除しました。私はあなたのテーブルの上でそれを試してください作業する必要があります。 –

+0

これは私のために働く。ありがとう! – Ann

関連する問題