112 votes

SQLite - remplacer 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

?

220voto

Andrew Points 525

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 de base 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\%';

30voto

vladkras Points 2064

La réponse de @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\%' ne choisira que les champs commençant par C:\afolder\ seulement. Et si vous avez ce chemin à l'intérieur de la chaîne ?

Donc la bonne requête est juste :

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

10voto

bugmenot123 Points 866

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;

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X