Remplacement d'une sous-chaîne dans un champ

À partir de Firebird 2.1 il y a une fonction REPLACE.

Pour voir ce que ça donne dans une requête SELECT :

select chemin, replace(lower(chemin), 'c:\oldpath\', 'c:\newpath\') from mytable where lower(chemin) like 'c:\oldpath\%';

Par exemple cela donnerait ceci :

CHEMINREPLACE
c:\oldpath\dossier1c:\newpath\dossier1
c:\oldpath\dossier2c:\newpath\dossier2
c:\oldpath\dossier2\lettre.docc:\newpath\dossier2\lettre.doc

Appliquer les changements avec une requête UPDATE :

update mytable set chemin = replace(lower(chemin), 'c:\oldpath\', 'c:\newpath\') where lower(chemin) like 'c:\oldpath\%';