2012-07-17 51 views
1

我有我的SQL表三個XML列(單列表只用於存儲XML)和XML的結構是這樣的:串聯XML從沒有類型轉換各種XML列串

在第1列 -

<Column1XML> 
    .... 
</Column1XML> 

在欄2 -

<Column2XML> 
    .... 
</Column2XML> 

在列3 -

<Column3XML> 
    .... 
</Column3XML> 

,我尋找的最後生成的XML:

<SomeTagName> 
    <Column1XML> 
     .... 
    </Column1XML> 
    <Column2XML> 
     .... 
    </Column2XML> 
    <Column3XML> 
     .... 
    </Column3XML> 
</SomeTagName> 

我怎樣才能獲得這個必要的架構沒有做字符串連接?我確信必須有Typed XML的出路。

在此先感謝您查閱我的問題。

回答

2

這裏有兩種方法給你。

的樣本數據

declare @T table 
(
    Col1 xml, 
    Col2 xml, 
    Col3 xml 
) 

insert into @T values 
(
'<Column1XML></Column1XML>', 
'<Column2XML></Column2XML>', 
'<Column3XML></Column3XML>' 
) 

使用root名稱作爲列別名

select Col1 as 'SomeTagName', 
     Col2 as 'SomeTagName', 
     Col3 as 'SomeTagName' 
from @T 
for xml path('') 

使用*爲列別名,並指定一個path()

select Col1 as '*', 
     Col2 as '*', 
     Col3 as '*' 
from @T 
for xml path('SomeTagName') 

結果:。。?

<SomeTagName> 
    <Column1XML /> 
    <Column2XML /> 
    <Column3XML /> 
</SomeTagName> 
+0

不幸的是,沒有工作:(結果不括在爲根相反,每個單獨的XML前來裹在有什麼想法 – 2012-07-17 07:37:51

+0

完全按照你提到的 - 創建一個帶有xml列的臨時表 - SELECT [Col1XML] AS'*', [Col2XML] AS'*' FROM @TempTable FOR XML PATH('SomeTagName') – 2012-07-17 07:39:01

+0

您有XML作爲同一行上的不同列或作爲同一列,但多行? – 2012-07-17 07:39:57