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

I want to select all child-nodes of a parent-node. I am thinking about something looking like this:

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

edit: 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>

expected result:

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

1 Answers1

1

Try something like the following, based on XMLTABLE:

select t.* from x,   
       xmltable('$X/test/xml'
          columns "type" int path 'data(@type)',
                  "text" varchar(10) path 'text()') as t

It should return a table with the desired values and structure.

data_henrik
  • 16,724
  • 2
  • 28
  • 49