1

以下の形式で説明されているように、asp.net Web サービスから応答を取得しています。これを、年齢列に年齢、日付列に日付の表形式に変換したいと思います。以前にこの質問をしましたが、xml で o/p を取得する文字列でした。どうすればよいですか?

この形式の @response で応答出力を取得します。

<?xml version="1.0" encoding="utf-8"?>
<string xmlns="http://abc.org/">age=7|Date=15/04/2006^age=5|Date=15/04/2008</string>

ストアド プロシージャを使用して、SQL Server 2008 でこれを行列形式に分割する方法。誰でも私を助けることができます。

4

2 に答える 2

2

選択した文字列分割関数を使用して、^1 番目と|2 番目に分割します。その後pivot、列でデータを取得するために使用できます。

declare @XML xml = '<?xml version="1.0" encoding="utf-8"?><string xmlns="http://abc.org/">age=7|Date=15/04/2006^age=5|Date=15/04/2008</string>';

with xmlnamespaces(default 'http://abc.org/')
select P.age,
       P.Date
from (
     select S1.ID,
            left(S2.Item, charindex('=', S2.Item) - 1) ColName,
            stuff(S2.Item, 1, charindex('=', S2.Item), '') Value
     from SplitString(@XML.value('string[1]', 'varchar(max)'), '^') as S1
       cross apply SplitString(S1.Item, '|') as S2
     ) as X
  pivot
    (
    min(X.Value)  
    for X.ColName in (age, Date)
    ) as P;

SQL フィドル

于 2013-08-26T13:30:51.647 に答える
0

SQL Server で実行する場合は、テキスト文字列を読み取る .NET CLR ストアド プロシージャを作成し、'|' で分割する必要があります。文字を挿入し、テーブル/オブジェクトに挿入/割り当てます。この記事を参照してください http://msdn.microsoft.com/en-us/library/5czye81z(v=vs.90).aspx

于 2013-08-26T12:20:43.057 に答える