私の歴史と今

振り返ると恥ずかしくなるのが私の歴史。だけどそのときは真面目に書いていた訳でね。そんな今の私を書いていく。

XQueryでリレーショナルに問い合わせ

<tag1>
  <tag2>
    <tag3>3</tag3>
    <tag4>4</tag4>
    <tag5>5</tag5>
  </tag2>
  <tag2>
    <tag3>6</tag3>
    <tag4>7</tag4>
    <tag5>8</tag5>
  </tag2>
</tag1>

上記のtag3, tag4, tag5の値は、下記SQLで、

SELECT b.col1, b.col2, b.col3 
 FROM table_name a, 
    XMLTable('for $v in //tag1/tag2 
         return $v' 
        PASSING XMLType(a.col_blob, nls_charset_id('JA16SJIS')) 
        COLUMNS col1 VARCHAR2(10) PATH 'tag3', 
            col2 VARCHAR2(10) PATH 'tag4', 
            col3 VARCHAR2(10) PATH 'tag5' 
    ) b
order by a.col, b.col1, b.col2, b.col3; 

こんな感じに取得できる。

col1       col2        col3      
---------- ---------- ---------- 
3          4          5
6          7          8