In fact, REGEXP_REPLACE will work best for this. If you put part of the search expression in parentheses, you can refer to it in the third parameter "replace-with" - the first such expression is \1 , the second is \2 , etc. Until \9 (you cannot do more than 9).
For your requirement, try the following:
SELECT REGEXP_REPLACE(myXMLCol, '^.*<valorTasa>(.*)</valorTasa>.*$', '\1') FROM myTable ^^^^ ^^
The part in parentheses above - (.*) Is displayed in \1 . Oracle REGEXP_REPLACE docs explain this better than I can :)
source share