3

私は SQL の初心者で、非常に一般的なシナリオで立ち往生しています。ストアド プロシージャの入力パラメータとして入れ子になった子を持つ xml があります。

    <XML>
    <Id>1</Id>
    <Age>1</Age>
    <Address>Test</Address>
    .
    .
    <Days>
      <long>1</long>
      <long>2</long>
      <long>3</long>
      <long>7</long>
    </Days>
  </XML>

XMLタグ内のデータを選択できます

Id = t.Xml.value('(./Id)[last()]','int')

しかし、XML/Days 内のすべての長い値を選択する方法がわかりません。私は試した

 long = t.UserXml.value('.','int')

すべての値を 1237 として返しますが、これで問題は解決しません。別の行に値が必要で、長い値を別のテーブルに挿入する必要があります。

同じことに対する可能な解決策を教えてください。ありがとう

4

1 に答える 1

1

Days on Sqlserver の解決策は次のとおりです。

DECLARE @XML XML
SET @XML='<XML>
    <Id>1</Id>
    <Age>1</Age>
    <Address>Test</Address>
    <Days>
      <long>1</long>
      <long>2</long>
      <long>3</long>
      <long>7</long>
    </Days>
  </XML>'

SELECT 
    x.y.value('text()[1]', 'int') as xx
FROM @xml.nodes('XML/Days/long') x(y)
于 2013-07-16T05:34:13.570 に答える