2017-12-05 34 views
0

XML変数の値とその値が定義されています。SQL Serverの同じタグ名を持つXMLからの値の抽出

タグ<TextNodeChild>の間に定義されたテキストを単一のクエリで取得したいとします。

助けてください。

Declare @XMLVariable = 
'<?xml version="1.0"?> 
<root> 
    <TextNodeParent> 
     <TextNodeChild>12345</TextNodeChild> 
     <TextNodeChild>67890</TextNodeChild> 
     <TextNodeChild>12389</TextNodeChild> 
    </TextNodeParent> 
</root>' 

は、私はこのような出力を必要とする:

12345 
67890 
12389 
+1

これまでに試したことをお見せください – Marcel

答えて

0

あなたはXQueryを使用することができ(すなわちXMLは、クエリ).nodes()方法

SELECT 
    TextNodeParent = n.value('.[1]', 'NVARCHAR(max)') 
FROM 
    @XMLVariable.nodes('root/TextNodeParent/*') as p(n) 

EDIT:はあなただけ選択する場合TextNodeChildノードのデータは、その後、ほとんど変更がありませんxmlパスYogeshSharmaのソリューション@

@XMLVariable.nodes('root/TextNodeParent/TextNodeChild') as p(n) 

結果

TextNodeParent 
12345 
67890 
12389 
+0

解決に感謝します。 –

+0

これは、 ''の下に**すべての**要素をリストします。 ''ノードをjsutしません。サンプルでは、​​他のノードはありません - このように動作しますが、一般的な解決策として ' 'ノードの下に他の要素が格納されていれば失敗する可能性があります –

0

は動作します - ここに - あなたは<TextNodeParent>ノードの下<TextNodeChild>要素しか持っていないので。

あなたは、さまざまなノードを持っていた、とあなたはだけ<TextNodeChild>のものを抽出し、それらの値を取得(および他のすべてを無視)したい場合は、あなたの代わりにこのようなものを使用する必要があると思います:

SELECT 
    TextNodeParent = XC.value('.', 'INT') 
FROM 
    @XMLVariable.nodes('root/TextNodeParent/TextNodeChild') as XT(XC) 
関連する問題