2016-11-09 17 views
0
SELECT 
    XMLQUERY ('$x/test/xml[1]/data(@type)' PASSING XMLCOLUMN as "x") type, 
    XMLQUERY ('$x/test/xml[1]/text()' PASSING XMLCOLUMN as "x") text 
FROM 
    XML 

親ノードのすべての子ノードを選択します。xQuery配列[*]?

SELECT 
    XMLQUERY ('$x/test/xml[*]/data(@type)' PASSING XMLCOLUMN as "x") type, 
    XMLQUERY ('$x/test/xml[*]/text()' PASSING XMLCOLUMN as "x") text 
FROM 
    XML 

編集: のxml:

<test> 
    <xml type = 1>a</xml> 
    <xml type = 2>b</xml> 
    <xml type = 3>c</xml> 
    <xml type = 4>d</xml> 
    <xml type = 5>e</xml> 
    ... 
</test> 

期待される結果:

type | text 
-----|----- 
1 | a 
2 | b 
3 | c 
4 | d 
... 
+0

直接の子ノードまたはすべて? http://stackoverflow.com/questions/5119655/xpath-to-get-all-child-nodes-elements-comments-and-text-without-parentを参照してください。複数の列を返す場合は、XMLTABLE代わりに –

+0

XMLQUERY( '$ x/xml [*]/child :: node()' XMLCOLUMNを "x"にする)text 私に同じ結果を与える –

+0

期待される結果は何ですか? –

答えて

1

はXMLTABLEに基づいて、次のようなものを試してみてください:

私はこのように見て何かを考えています
select t.* from x, 
     xmltable('$X/test/xml' 
      columns "type" int path 'data(@type)', 
        "text" varchar(10) path 'text()') as t 

目的の値と構造のテーブルを返す必要があります。