Skip to content

Instantly share code, notes, and snippets.

@aykononov
Last active April 7, 2020 14:21
Show Gist options
  • Save aykononov/e1364aa53b2959c65da10aa1858e8273 to your computer and use it in GitHub Desktop.
Save aykononov/e1364aa53b2959c65da10aa1858e8273 to your computer and use it in GitHub Desktop.
Выборка из XML.
/*
Имеется
xmltype('
<root>
<row>
<col>v11</col>
<col>v12</col>
<col>v13</col>
<col>v14</col>
</row>
<row>
<col>v21</col>
<col>v22</col>
<col>v23</col>
<col>v24</col>
</row>
</root>')
Необходимо:
а) Получить выборку
C1 C2 C3 C4
---- ---- ---- ----
v11 v12 v13 v14
v21 v22 v23 v24
Условие: количество узлов row может варьироваться, col всегда статично = 4 шт в пределах row.
*/
SELECT p.*
FROM XMLTABLE ( 'root/row'
PASSING (XMLTYPE('<root>
<row>
<col>v11</col>
<col>v12</col>
<col>v13</col>
<col>v14</col>
</row>
<row>
<col>v21</col>
<col>v22</col>
<col>v23</col>
<col>v24</col>
</row>
</root>
'))
COLUMNS
c1 VARCHAR2(255) PATH '/row/col[1]',
c2 VARCHAR2(255) PATH '/row/col[2]',
c3 VARCHAR2(255) PATH '/row/col[3]',
c4 VARCHAR2(255) PATH '/row/col[4]'
) p;
@aykononov
Copy link
Author

aykononov commented Nov 11, 2019

Имеется 
xmltype('
<root>
  <row>
    <col>v11</col>
    <col>v12</col>
    <col>v13</col>
    <col>v14</col>
  </row>
  <row>
    <col>v21</col>
    <col>v22</col>
    <col>v23</col>
    <col>v24</col>
  </row>
</root>')

Необходимо:

 а) Получить выборку

C1   C2   C3   C4
---- ---- ---- ----
v11  v12  v13  v14
v21  v22  v23  v24

Условия: количество узлов row может варьироваться, col всегда статично = 4 шт в пределах row

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment