Oracle
 sql >> Base de données >  >> RDS >> Oracle

Rechercher une chaîne pour un modèle d'expression régulière et remplacer chaque occurrence comme une dérivation d'elle-même dans Oracle SQL

Pas d'expression régulière mais ça marche.

select  xmlcast( xmlquery('for $w in tokenize($text," ") return
    if(fn:matches($w,"[0-9]{1,3}")) then (xs:decimal($w)+$offset) else ($w)'
                passing 'i want to increase those numbers 20 and 15' as "text", 5 as "offset" returning content) as varchar2(1000))
  from dual;

La solution recherche des nombres entiers dans le texte. Pour les décimales, les regex internes doivent être étendues.

\d et [:digit:] ne sont pas pris en charge par xmlquery