您的示例上的操作和对象不在同一级别,因此您的查询必须执行其他步骤.这是一个例子:
sql> create table users (id number,profile xmltype);
Table created.
sql> insert into users values (1,XMLTYPE('
2 I
3 like
4 sports
5 music
6
7
8 '));
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 sports music
正如您所看到的,我们得到了节点,而不是您想要的,所以我们添加了一个XMLTABLE:
sql> select u.id,y.object
2 from users u,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