0

名前がわからないいくつかのカスタム フィールドを含む xml ドキュメントがあります。名前の値のスタイルで内容を一覧表示する select ステートメントを生成したいと考えています。

私が見つけたすべての例では、ノードの名前を知る必要があります。すなわち

declare @idoc int
     declare @doc nvarchar(max); set 
     @doc = '<user>
  <additionalfields>
    <Account__Manager>Fred Dibner</Account__Manager>
    <First__Aider>St Johns Ambulance</First__Aider>
  </additionalfields>
</user>'
EXEC sp_xml_preparedocument @idoc OUTPUT, @doc;
SELECT    * FROM       OPENXML (@idoc, 'user/additionalfields/',1) 

これを達成することは可能ですか?

4

1 に答える 1

0

まあ、かなりの量の実験の後に答えを見つけました.(ちなみに、二重アンダースコアの置換は、データベースフィールド名のいくつかの出力形式によるものです.

SELECT replace(name,'__',' ') as name, value 
            FROM OPENXML (@idoc, '/user/additionalfields/*',1) 
            WITH (          
                Name  nvarchar(4000) '@mp:localname',
                value  nvarchar(4000) './text()'
                  ) 

結果

于 2013-10-03T14:39:40.087 に答える