【发布时间】:2016-09-03 20:29:48
【问题描述】:
从保存在我的表的 CLOB 列中的 xml 中获取子 xml 的查询如下:
select REGEXP_REPLACE(xmltype(t.prov_request).extract('//SOAP_Domain_Msg/Body').getStringVal(),'<Body>|</Body>','') xml
from tbl_prov_comptel
上述查询返回的字符串中有"SO1_USERNAME" value="xxx"。
我想要实现的是形成一个合并查询并在上面表达式的开头附加一些内容。
即"SO1_USERNAME" value="qwexxx"
【问题讨论】:
-
您能否提供一些示例数据和数据的预期输出
-
将
/*附加到XPath 中,您可以像这样摆脱REGEXP_REPLACE:xmltype(t.prov_request).extract('//SOAP_Domain_Msg/Body/*').getStringVal() -
@MT0 完美的先生。那行得通,但这只是其中的一部分。我想在同一个查询中对返回的字符串应用替换函数。即字符串包含
"SO1_USERNAME" value="xxx",我想在字符串中添加几个字符,例如"SO1_USERNAME" value="123xxx"。我一直无法这样做。 -
正如@Matt 所说 - 请提供一些示例数据和您的预期输出。使用 XPath 可能有一种简单的方法(没有正则表达式 - 因为 XHTML is not a regular language 所以使用正则表达式可靠地解析它并不总是简单的)。
-
这是保存在clob中的xml。
<SOAP_Domain_Msg> </Header> <Body> <NS4:ModifyRequest xmlns:NS4="http://soa.comptel.com/2011/02/instantlink"> <NS4:RequestParameters> <NS4:Parameter name="SO1_USERNAME" value="222671150"/> </NS4:RequestParameters> </NS4:ModifyRequest> </Body> </SOAP_Domain_Msg>我打算编写一个从<NS4:ModifyRequest>开始返回子 xml 的查询。此外,我想应用所选 xml 的用户名属性附加一些数字,即<NS4:Parameter name="SO1_USERNAME" value="CBA222671150"/>@MT0 @Matt
标签: sql regex database oracle replace