2016-11-09 3 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 Array [*]?

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 

원하는 값과 구조로 테이블을 반환해야합니다.