SQLite – remplace une partie d’une chaîne

Est-il possible d’utiliser SQL dans une table SQLite pour remplacer une partie d’une chaîne?

Par exemple, j’ai une table où l’un des champs contient le chemin vers un fichier. Est-il possible de remplacer des parties de la chaîne de sorte que, par exemple

 c:\afolder\afilename.bmp 

devient

 c:\anewfolder\afilename.bmp 

?

Vous pouvez utiliser la fonction replace() intégrée pour effectuer un remplacement de chaîne dans une requête.

D’autres fonctions de manipulation de chaînes (et plus) sont détaillées dans la liste des fonctions principales de SQLite

Ce qui suit devrait vous orienter dans la bonne direction.

UPDATE table SET field = replace( field, 'C:\afolder\', 'C:\anewfolder\' ) WHERE field LIKE 'C:\afolder\%';

La réponse @Andrew est partiellement correcte. Pas besoin d’utiliser la clause WHERE ici:

  1. Seuls les champs contenant C:\afolder seront affectés de toute façon, aucune raison de le vérifier. C’est excessif
  2. 'C:\afolder\%' choisira uniquement les champs commençant par C:\afolder\ only. Et si vous avez ce chemin dans la chaîne?

Donc, la requête correcte est juste:

 UPDATE table SET field = replace( field, 'C:\afolder\', 'C:\anewfolder\'); 

Et si vous voulez juste le faire dans une requête sans conséquences durables:

 SELECT fieldA, replace(field, 'C:\afolder\', 'C:\anewfolder\'), fieldB FROM table;