我们需要使用select语句从xmltype列中捕获值。下面是我们在“测试”列中的值。
<c18>A</c18><c18 m="2">B</c18><c18 m="3">C</c18><c18 m="4"D</c18><c18 m="5">E</c18><c18 m="6">F</c18><c18 m="7">G</c18><c18 m="8">H</c18>
我们需要有8个新的列,应该命名为“C1”,“C2”等具有值A,B,C等。
wtlkbnrh1#
您的XML无效(在m="4"之后缺少结束>并且没有根元素)。如果你解决了这个问题,那么你可以用途:
m="4"
>
SELECT x.* FROM table_name t CROSS APPLY XMLTABLE( '/root' PASSING t.test COLUMNS c1 VARCHAR2(20) PATH './c18[not(@m)]', c2 VARCHAR2(20) PATH './c18[@m="2"]', c3 VARCHAR2(20) PATH './c18[@m="3"]', c4 VARCHAR2(20) PATH './c18[@m="4"]', c5 VARCHAR2(20) PATH './c18[@m="5"]', c6 VARCHAR2(20) PATH './c18[@m="6"]', c7 VARCHAR2(20) PATH './c18[@m="7"]', c8 VARCHAR2(20) PATH './c18[@m="8"]' ) x
其中,对于样本数据:
CREATE TABLE table_name (test XMLTYPE); INSERT INTO table_name (test) VALUES (XMLTYPE( '<root><c18>A</c18><c18 m="2">B</c18><c18 m="3">C</c18><c18 m="4">D</c18><c18 m="5">E</c18><c18 m="6">F</c18><c18 m="7">G</c18><c18 m="8">H</c18></root>' ) );
输出:| C1| C2| C3| C4| C5| C6| C7| C8|| - -----|- -----|- -----|- -----|- -----|- -----|- -----|- -----|| 一个|B| C类|D级|E级|F型|G级|H型|fiddle
1条答案
按热度按时间wtlkbnrh1#
您的XML无效(在
m="4"
之后缺少结束>
并且没有根元素)。如果你解决了这个问题,那么你可以用途:其中,对于样本数据:
输出:
| C1| C2| C3| C4| C5| C6| C7| C8|
| - -----|- -----|- -----|- -----|- -----|- -----|- -----|- -----|
| 一个|B| C类|D级|E级|F型|G级|H型|
fiddle