Bonjour,
Les possibilités des expressions régulières avec MySQL sont effectivement assez limitées. Celles-ci tendant vers la norme POSIX ne bénéficient pas des possibilités offertes par les PCRE.
Dans le cas présent REGEXP ne sera donc d' aucun secours.
Si c'est pour un caractère particulier et déterminé à l'avance comme par exemple un point-virgule. On peut utiliser les fonctions LOCATE et SUBSTRING :
SELECT SUBSTRING( @CHAINE := 'Valeur1;Valeur2;Valeur3;Valeur4', 1, LOCATE( @CARACTERE := ';', @CHAINE, LOCATE( @CARACTERE, @CHAINE ) + 1 ) - 1 );
On peut ensuite intégrer cela dans un UPDATE en supprimant le SELECT du début.
UPDATE DB_TRUC.T_MACHIN SET CHAMP_BIDULE = SUBSTRING( CHAMP_BIDULE, 1, LOCATE( @CARACTERE := ';', CHAMP_BIDULE, LOCATE( @CARACTERE, CHAMP_BIDULE ) + 1 ) - 1 );
Ce qui devrait marcher!
Bon courage.
Partager