由于您的 VALUE 列是 XML,您可以尝试使用可用的 XML 函数来提取值。从 XML 中提取“版本”的实际 XPath 可能因 XML 文档的结构而异。
查询
WITH
store_values (code, VALUE)
AS
(SELECT 'DataSet1',
TO_CLOB ('<doc><attr1>abc</attr1><Version>1</Version><attr2>def</attr2></doc>')
FROM DUAL
UNION ALL
SELECT 'DataSet2',
TO_CLOB ('<doc><attr1>ghi</attr1><Version>5</Version><attr2>jkl</attr2></doc>')
FROM DUAL)
SELECT code, EXTRACTVALUE (xmltype (VALUE), '/doc/Version/text()') AS version_no
FROM store_values;
结果
CODE VERSION_NO
___________ _____________
DataSet1 1
DataSet2 5
更新
由于VALUE 列不包含真正的 XML,您可以使用 REGEX 表达式提取值。下面的查询将给出与上面相同的结果。
WITH
store_values (code, VALUE)
AS
(SELECT 'DataSet1',
TO_CLOB ('<doc><attr1>abc</attr1><Version>1</Version><attr2>def</attr2></doc>')
FROM DUAL
UNION ALL
SELECT 'DataSet2',
TO_CLOB ('<doc><attr1>ghi</attr1><Version>5</Version><attr2>jkl</attr2></doc>')
FROM DUAL)
SELECT code,
REGEXP_REPLACE (REGEXP_SUBSTR (VALUE, '<Version>.*</Version>'), '<[^>]*>') AS version_no
FROM store_values;