【发布时间】:2015-04-01 07:26:41
【问题描述】:
我有一个 SOAP_MONITORING 表,该表具有 RESPONSE_XML 列,该列是 CLOB 数据类型并由大字符串组成。我需要获取并显示隐藏在此字符串中的所有 SUBSCRIPTION_ID。 SUBSCRIPTION_ID 位于此字符串中:<ax2147:subscriptions xsi:type="ax2127:SubscriptionDTO"><ax2130:id>201411211617575057</ax2130:id>。我必须获取所有 ID,它只是位于<ax2147:subscriptions xsi:type="ax2127:SubscriptionDTO"><ax2130:id> and </ax2130:id> string 之间的我的 SUBSCRIPTION_ID。我尝试了以下查询:
SELECT REPLACE(REPLACE(MatchedId, '<ax2147:subscriptions xsi:type="ax2127:SubscriptionDTO"><ax2130:id>', ''), '</ax2130:id>', '')
FROM
(
SELECT REGEXP_SUBSTR(RESPONSE_XML, '<ax2147:subscriptions xsi:type="ax2127:SubscriptionDTO"><ax2130:id>\d+</ax2130:id>')
FROM SOAP_MONITORING
)
WHERE
WEB_SERVICE_NAME='RatorWebShopService' and WEB_METHOD_NAME='placeShopOrder'
但收到一个空结果。
【问题讨论】:
-
简单的 SUBSTR 和 INSTR 就足够了。为什么要将
xmltype存储到CLOB中? -
我没用过。它来自我正在查询的客户端数据库。我没有更改列类型的写入权限。只有我可以在这个数据库中使用 Select 语句并查询表。
-
您说原始数据与您在问题中提供的不一样。您为什么不编辑您的问题并提供正确的信息以避免不必要的讨论。
标签: sql string oracle substring clob