2016-04-11 20 views
4

ben üç sütun A, B ve C ile basit düz SQL tablosu var Attibutes:dönüştürme SQL satır ve

CREATE TABLE [tmp] 
(
    [A] NVARCHAR(32) NULL 
, [B] NVARCHAR(32) NULL 
, [C] NVARCHAR(32) NULL 
); 

Ben

gibi bir XML nesnesine her satır dönüştürmek istiyoruz
<Parameter name="A" description="B">666</Parameter> 

FOR XML AUTO kullanırsanız, tüm sütunlar XML özniteliğine dönüştürülür. FOR XML AUTO, ELEMENTS kullanabilir veya FOR XML RAW'u kullanarak etiket alabilirim, ancak A ve B sütunlarını bir özniteliğe dönüştürmek ve C sütununu etiket değeri olarak kullanmak istiyorum.

Bu sonucu nasıl alabilirim? Neredeyse her durumda FOR XML PATH yılında

cevap

5

iyi yaklaşım (ve en hızlı)

CREATE TABLE [tmp] 
(
    [A] NVARCHAR(32) NULL 
, [B] NVARCHAR(32) NULL 
, [C] NVARCHAR(32) NULL 
); 
INSERT INTO [tmp] VALUES 
('A','B','666') 
,('One more A','And one more B','777'); 

SELECT A AS [@name] 
     ,B AS [@description] 
     ,C AS [*] 
FROM [tmp] 
FOR XML PATH('Paramter'); 


--Clean Up 
GO 
DROP TABLE [tmp]; 

sonuç

<Paramter name="A" description="B">666</Paramter> 
<Paramter name="One more A" description="And one more B">777</Paramter> 
+0

Mükemmel olduğunu! Birkaç özel karakteri denedim, ama asteriks değil! Çok teşekkür ederim! – akm

İlgili konular