Oracle
 sql >> база данни >  >> RDS >> Oracle

От XML до списък с пътища в Oracle 12c

SQL Fiddle

Настройка на схема на Oracle 11g R2 :

CREATE TABLE xml_data ( xml ) AS SELECT XMLTYPE('  0123 2345  3   ') ОТ ДВОЙНО;  

Заявка 1 :

select xpath, textfrom xml_data d CROSS JOIN XMLTable( 'for $i in $doc/descendant-or-self::* let $path :=$i/string-join(ancestor-or-self::*/name(.), ''/'') return {attribute path {$path}, attribute value {$i/text()}}' ПРЕДАВАНЕ на d.xml КАТО "doc" КОЛОНИ xpath varchar2(4000) път '/data/@path', текст varchar2(4000) път '/data/@value' )UNION ALLselect xpath, textfrom xml_data d CROSS JOIN XMLTable( 'за $i в $doc/descendant- or-self::* let $path :=$i/string-join(ancestor-or-self::*/name(.), ''/'') за $j в $i/attribute::* return {attribute path { concat( $path, "/@", $j/name(.) ) }, attribute value {$j}}' ПРЕДАВАНЕ d.xml AS "doc" COLUMNS xpath varchar2 (4000) път '/data/@path', текст varchar2(4000) път '/data/@value' ) 

Резултати :

<предварителен код>| XPATH | ТЕКСТ ||--------------------------------|--------|| АЛФА | (нула) || АЛФА/БЕТА | 0123 || АЛФА/ГАМА | 2345 || АЛФА/ДЕЛТА | (нула) || ALFA/DELTA/EPSILON | 3 || ALFA/GAMMA/@attribute1 | стойност1 || ALFA/DELTA/@attribute2 | стойност2 || ALFA/DELTA/EPSILON/@attribute3 | стойност3 || ALFA/DELTA/EPSILON/@attribute4 | стойност4 |


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Създайте CLOB от дълъг низ с помощта на JDBC

  2. добавяне на месеци към дата SQL

  3. Как да групирате по със специално условие

  4. Грешка при присъединяване към актуализиране

  5. Използване на уеб услуга и вмъкване на CLOB с помощта на Node.js към таблицата на Oracle Database