我有一個數據表如下SQL表鍵值對的XML
ID Key Value -------------------------- 1 F1 2 2 F2 5 3 F3 1
使用SQL Server 2005中的T-SQL,我怎樣才能將它轉換爲一個XML作爲
<Values>
<F1>2</F1>
<F2>5</F2>
<F3>1</F3>
</Values>
請幫幫我。
我有一個數據表如下SQL表鍵值對的XML
ID Key Value -------------------------- 1 F1 2 2 F2 5 3 F3 1
使用SQL Server 2005中的T-SQL,我怎樣才能將它轉換爲一個XML作爲
<Values>
<F1>2</F1>
<F2>5</F2>
<F3>1</F3>
</Values>
請幫幫我。
據我所知,甚至沒有神祕for xml explicit
允許您根據列名的XML標記。如果有幾個不同的鍵,就可以解決,通過枚舉他們:
select case when [key] = 'F1' then [value] end as [F1]
, case when [key] = 'F2' then [value] end as [F2]
, case when [key] = 'F3' then [value] end as [F3]
from @t
for xml path(''), root('Values')
如果有很多不同的密鑰,您可以手動創建XML字符串:
declare @output varchar(max)
set @output = '<Values>'
select @output = @output +
'<' + [key] + '>' +
CAST([value] as varchar(32)) +
'</' + [key] + '>'
from @t
set @output = @output + '</Values>'
select @output
測試數據:
declare @t table (id int, [key] varchar(3), value int)
insert @t values (1, 'F1', 2)
insert @t values (2, 'F2', 5)
insert @t values (3, 'F3', 1)
兩個選擇打印:
<Values><F1>2</F1><F2>5</F2><F3>1</F3></Values>
爲什麼不只是查詢表格,將行存儲在數組中,並使用您的(可能是服務器)腳本語言輸出它們(到文件或屏幕)?如果有辦法讓SqlServer像這樣輸出,我不知道它,但它在任何語言中都應該非常簡單。
僞代碼
LET arr = array of table rows
print "<Values>"
foreach in arr as row
print "<" + row['Key'] + ">" + row['Value'] + "</" + row['Key'] + ">"
end foreach
print "</Values>"
我想在存儲過程中完成它,而不會將數據拉出。所以這對我來說不是一個好的選擇。謝謝回答。 – Dimuthu 2010-11-21 01:31:19
這很好。我試着用「for xml explicit」,但無法通過。謝謝你回答我的問題。 – Dimuthu 2010-11-21 01:35:20