1

私は次のようなXMLデータを受け取ります

<t>
  <ID>8</ID>
  <FirstName>name 8</FirstName>
  <LastName>surname 8</LastName>
  <DateOfBirth>1963-05-23T00:00:00</DateOfBirth>
</t>

SQLServerのストアドプロシージャ。さまざまなxmlデータ形式があります(フィールド番号とフィールド名は異なる場合があります)。次に、各フィールドとその値を抽出し、各フィールド/値を個別のレコードとしてテーブルに挿入する必要があります。

TSQLでこれを行う方法の例はありますか?

4

2 に答える 2

2

XMLを簡単にスキャンできます-XMLが常に<t>ルートノードの下にあり、常に1レベルの深さである場合:

DECLARE @input XML = '<t>
  <ID>8</ID>
  <FirstName>name 8</FirstName>
  <LastName>surname 8</LastName>
  <DateOfBirth>1963-05-23T00:00:00</DateOfBirth>
</t>'

SELECT
    FieldName = nodes.value('local-name(.)', 'varchar(50)'),
    FieldValue = nodes.value('(.)[1]', 'varchar(50)')
FROM
    @input.nodes('/t/*') AS Tbl(nodes)

出力は次のとおりです。

ここに画像の説明を入力してください

しかし、それは実際には、そのデータを今何をしたいかによって異なります。XMLからデータを取得すると、目的のターゲットテーブルの構造はどのようになりますか。

于 2012-10-25T09:28:06.237 に答える
0

@xあなたのxmlはどこにありますか

insert yourtable (ID, Firstname, Lastname, DOB)
select 
    @x.value('(/t/ID)[1]','int'),
    @x.value('(/t/FirstName)[1]','varchar(50)'),
    @x.value('(/t/LastName)[1]','varchar(50)'),
    @x.value('(/t/DateOfBirth)[1]','datetime')

http://msdn.microsoft.com/en-us/library/ms178030(v=sql.100).aspxを参照してください

于 2012-10-25T09:26:48.960 に答える