2010-11-20 27 views
2

にSQL Server 2005でのTSQLを使用してSQLテーブルのキーと値のペアXML

 
ID  Key  Value 
-------------------------- 
1  F1  2 
2  F2  5 
3  F3  1 

を次のように私はこれが

<Values> 
    <F1>2</F1> 
    <F2>5</F2> 
    <F3>1</F3> 
</Values> 

としてXMLに変換することができますどのように、データテーブルを持ってください。助けて。

答えて

4

ではなく、さらに難解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> 
+0

これは素晴らしい動作します。私は "for xml explicit"と試していましたが、通過できませんでした。ありがとう、これは私の質問に答えた。 – Dimuthu

1

テーブルをクエリし、配列を配列に格納し、(おそらくサーバー)スクリプト言語を使用して(ファイルまたはスクリーンに)出力するのはなぜですか? 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>" 
+0

私はストアドプロシージャ内でデータを引き出すことなくそれをやりたかったのです。だから、これは私にとっては良い選択ではありませんでした。回答ありがとうございます。 – Dimuthu

関連する問題