Bonjour,

Je cherche à faire une requête dans laquelle je vérifie la présence d'un caractère vide ou d'un marqueur de début de ligne.

Je m'explique : j'ai une table avec des noms de communes dont les "saint-" et "sainte-" sont rentrés sous la forme "st-" et "ste-".
Je voudrais les modifier pour que le nom dans la base soit bien de la forme "saint".

Pour cela, j'utilise la requête suivante :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
UPDATE cit_poste
SET cit_poste.commune = REPLACE(cit_poste.commune, 'ST-', 'SAINT-')
WHERE LEFT(cit_poste.commune, 3) = 'ST-';
 
UPDATE cit_poste
SET cit_poste.commune = REPLACE(cit_poste.commune, 'STE-', 'SAINTE-')
WHERE LEFT(cit_poste.commune, 4) = 'STE-';
Le problème, c'est que cette requête modifie aussi les noms du genre "st-cast-le-guildo" ou "st-priest-la-feuille" qui deviennent "saint-casaint-le-guildo" et "saint-priesaint-la-feuille".

Je voudrais donc soit pouvoir détecter la présence d'un caractère vide avant le "st-", ce qui donnerait une requête du genre :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
UPDATE cit_poste
SET cit_poste.commune = REPLACE(cit_poste.commune, '[caractère vide]ST-', '[caractère vide]SAINT-')
WHERE LEFT(cit_poste.commune, 3) = 'ST-';
Soit utiliser un genre de replace qui remplacerait uniquement la première occurrence de "st-" dans la chaîne.

Savez-vous comment je pourrais m'y prendre ? J'ai cherché sur différents sites sans trouver de solution convenable.

Merci d'avance,

Aenur56