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

Oracleでxmltableを使用する方法は?

    アクション およびobject あなたの例では同じレベルではないので、クエリは追加のステップを実行する必要があります。次に例を示します:

    SQL> create table users (id number, profile xmltype);
    
    Table created.
    
    SQL> insert into users values (1, XMLTYPE('<profile>
      2      <subject>I
      3         <action>like
      4             <object>sports</object>
      5             <object>music</object>
      6         </action>
      7      </subject>
      8  </profile>'));
    
    1 row created.
    
    SQL> select u.id, x.action, x.object.getStringVal()
      2    from users u,
      3         XMLTABLE('/profile/subject/action'
      4                  passing u.profile
      5                  columns action VARCHAR2(30) PATH 'text()',
      6                          object XMLTYPE PATH 'object') x;
    
    ID  ACTION  X.OBJECT.GETSTRINGVAL()
    --- ------- --------------------------------------------------
    1   like    <object>sports</object> <object>music</object>
    

    ご覧のとおり、ノードを取得しましたが、実際には必要なものではないため、 XMLTABLEを追加します。 :

    SQL> select u.id, x.action, y.object
      2    from users u,
      3         XMLTABLE('/profile/subject/action'
      4                  passing u.profile
      5                  columns action VARCHAR2(30) PATH 'text()',
      6                          object XMLTYPE PATH 'object') x,
      7         XMLTABLE('/object'
      8                  passing x.object
      9                  columns object VARCHAR2(30) PATH '.') y;
    
    ID  ACTION  OBJECT
    --- ------- -------
    1   like    sports
    1   like    music
    



    1. SQLDeveloperで変数の値を出力する

    2. SequelProを使用してデータベースに接続する方法

    3. SQLServerコレクションインベントリスクリプト-2

    4. スキーマ内のすべての無効なパッケージをコンパイルする方法は?