以下のように、SQL Server テーブルに 2 つの行があるとします。
Id Name Address
---------------------
1 Kamal Kathmandu
2 Rahul Pokhara
この 2 つの行をこのように 1 つの文字列に格納したいのですが、
1,Kamal,Kathmandu@2,Rahul,Pokhara
以下のように、SQL Server テーブルに 2 つの行があるとします。
Id Name Address
---------------------
1 Kamal Kathmandu
2 Rahul Pokhara
この 2 つの行をこのように 1 つの文字列に格納したいのですが、
1,Kamal,Kathmandu@2,Rahul,Pokhara
DECLARE @xml XML = (SELECT *,'@' as Sep FROM YourTable FOR XML PATH(''))
SELECT Replace(Replace(stuff((SELECT ',' + node.value('.', 'varchar(max)')
FROM @xml.nodes('/*') AS T(node)
FOR XML PATH(''), type).value('.','varchar(max)')
, 1, 1, ''),',@,','@'),',@','');
わかりました、これは悪い考えです。あなたは何か間違ったことをしていますが...
DECLARE @badIdea nvarchar(max);
SET @badIdea = '';
SELECT @badIdea = @badIdea +
STR(Id) + N',' +
Name + N',' +
Address + N'@'
FROM SomeTable;
IF @@ROWCOUNT > 0
SET @badIdea = SUBSTRING(@badIdea, 0, LEN(@badIdea) - 1);
SELECT @badIdea;
DECLARE @ResultString varchar(max)
SET @ResultString = ''
SELECT @ResultString = @ResultString + cast(Id as varchar) + ','
+ Name + ',' + Address + '@'
FROM yourTable
SELECT @ResultString
@ResultString には、カンマで区切られた単一の文字列 1,Kamal,Kathmandu@2,Rahul,Pokhara が含まれます