En fait, je ne comprends pas très bien ce que tu veux faire avec tes LEFT.
IF d LIKE CONCAT('% ', a, ' %')
Ce code veut dire : si " abreviation " est contenu dans l'adresse.
% correspond à 0, 1 ou plusieurs caractères quelconques.
'73 BD de la plage' LIKE '% BD %'
Ce code renvoie vrai (1) car l'adresse est du bon format. Le premier % serait ici utilisé pour '73' et le deuxième pour 'de la plage'.
Si tu veux savoir si une adresse contient une abréviation, c'est donc comme cela qu'il faut faire. Du moins, c'est une méthode (qui est assez simple).
Si toutes tes abréviations sont précédées et suivies d'un espace, c'est facile. Tu fais le IF ci-dessus et dans le THEN, tu auras :
UPDATE clients SET adr1 = REPLACE(adr1, CONCAT(' ', abreviation, ' '), CONCAT(' ', correction, ' '))
Après, si tu peux avoir un espace après l'abréviation mais pas avant, comme dans une adresse sans numéro, il faut faire un autre IF sans l'espace de début . Idem pour le UPDATE qui suit.
Partager