sql >> データベース >  >> RDS >> Oracle

XML から Oracle 12c のパスのリストへ

    SQL フィドル

    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()}}' PASSING d.xml AS "doc" COLUMNS xpath varchar2(4000) path '/data/@path', text varchar2(4000) path '/data/@value' )UNION ALLselect xpath, textfrom xml_data d CROSS JOIN XMLTable( 'for $i in $doc/descendant- or-self::* let $path :=$i/string-join(ancestor-or-self::*/name(.), ''/'') for $j in $i/attribute::* return {attribute path { concat( $path, "/@", $j/name(.) ) }, attribute value {$j}}' PASSING d.xml AS "doc" COLUMNS xpath varchar2 (4000) パス '/data/@path'、テキスト varchar2(4000) パス '/data/@value' )  

    結果 :

    <プレ>| XPATH |テキスト ||--------------------------------|--------||アルファ | (ヌル) ||アルファ/ベータ | 0123 ||アルファ/ガンマ | 2345 ||アルファ/デルタ | (ヌル) ||アルファ/デルタ/イプシロン | 3 ||アルファ/ガンマ/@attribute1 |値1 ||アルファ/デルタ/@attribute2 |値2 ||アルファ/デルタ/エプシロン/@attribute3 |値3 ||アルファ/デルタ/エプシロン/@attribute4 | value4 |


    1. SQLiteツールをダウンロードしてインストールする方法

    2. データベース管理システムに関する5つの興味深い事実

    3. MySQLでパーセンテージとして数値をフォーマットする

    4. フィールドリストの不明な列