我有一个oracle表,其中有一个存储XML的列。 XML具有以下语法:
<?xml version="1.0"?>
<MessageData>
<TextblockParameters>
<TextblockParameter>
<tagName>BUSINESSPROCESSID</tagName>
<value>RETAIL</value>
</TextblockParameter>
<TextblockParameter>
<tagName>SEGMENT</tagName>
<value>RESIDENTIAL</value>
</TextblockParameter>
<TextblockParameter>
<tagName>TRANSACTIONTYPE</tagName>
<value>PURCHASE</value>
</TextblockParameter>
<TextblockParameter>
<tagName>LANGUAGE</tagName>
<value>EST</value>
</TextblockParameter>
</TextblockParameters>
</MessageData>
现在我需要从<value></Value>
的所有4个地方获取信息。请解决此问题,不知道 Extractvalue 是否是最佳解决方案
答案 0 :(得分:4)
您可以为此使用XMLTABLE
函数(see examples)
SELECT t.foo, xt.*
FROM t, XMLTABLE('//TextblockParameter'
PASSING t.xmlcol
COLUMNS
tagName VARCHAR2(100) PATH './tagName',
value VARCHAR2(100) PATH './value'
) xt;
答案 1 :(得分:-1)
您可以使用
# python3 net.py
socket 4
Address 192.168.6.1
Address 17213632
Adding default route: 101
select extract(col1, '//value') from t;
✓
create table t (col1 xmltype);
1 rows affected
insert into t values (' <MessageData> <TextblockParameters> <TextblockParameter> <tagName>BUSINESSPROCESSID</tagName> <value>RETAIL</value> </TextblockParameter> <TextblockParameter> <tagName>SEGMENT</tagName> <value>RESIDENTIAL</value> </TextblockParameter> <TextblockParameter> <tagName>TRANSACTIONTYPE</tagName> <value>PURCHASE</value> </TextblockParameter> <TextblockParameter> <tagName>LANGUAGE</tagName> <value>EST</value> </TextblockParameter> </TextblockParameters> </MessageData>');
| EXTRACT(COL1,'//VALUE') | | :------------------------------------------------------------------------------------------------------- | | <value>RETAIL</value><br><value>RESIDENTIAL</value><br><value>PURCHASE</value><br><value>EST</value><br> |
db <>提琴here