我有一个带有varchar列的表,其数据如下:

"<tasa>
  <parametros>
    <parametro>
      <nombre>ea</nombre>
      <valor>35</valor>
    </parametro>
  </parametros>
  <valorTasa>3.15</valorTasa>
</tasa>"


我需要能够提取valorTasa标记之间的值,但不知道如何使用该函数并且无法访问oracle文档。

我正在尝试类似

select regexp_substr(field, '<valorTasa>[0-9]{0-3}</valorTasa') from dual;


没有结果。
任何帮助将不胜感激

最佳答案

更简单的方法是使用函数提取节点的值。

-- sample of data
SQL> with t1(col) as(
  2    select '<tasa>
  3              <parametros>
  4                <parametro>
  5                  <nombre>ea</nombre>
  6                  <valor>35</valor>
  7                </parametro>
  8             </parametros>
  9             <valorTasa>3.15</valorTasa>
 10           </tasa>'
 11      from dual
 12  )
 13  select extractvalue(xmltype(col), '/tasa/valorTasa') as res
 14    from t1
 15  /

RES
-------
3.15