Bonjour,
je débute dans les fonctions, et je ne sais pas comment faire, j'ai dans ma table auteur un champ nomsPrenoms qui contient le nom et le prenom d'un auteur mais avec une virgule entre le nom et le prenom. Dans ce champ il peut y avoir plusieurs auteurs séparé par un ';' .
un auteur = nom + , + prenom;
si 2 auteurs et plus :
nom1 + , + prenom1 ; nom2 + , + prenom2.
Le but et de rapporter l'auteur sous la forme prenom + nom sans virgule, et au cas de plusieurs auteur prenom + nom sans virgule et prenom2 + nom2.
Une fonction existe déjà, elle fonctionne pour supprimer la virgule mais ne gère pas le ; donc voici mon code, un peu modifié
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| DELIMITER $$
FUNCTION `fGetPrenomNom`(nomsPrenoms CHAR(255)) RETURNS char(255) CHARSET latin1
BEGIN
IF LOCATE(',',nomsPrenoms) THEN REPLACe(nomsPrenoms,';',' et ');
IF LOCATE(',',nomsPrenoms) THEN
RETURN CONCAT( LTRIM(substring_index(nomsPrenoms,',', -1)),' ',substring_index(nomsPrenoms,',', 1));
ELSE
RETURN nomsPrenoms ;
END IF;
END IF;
END$$
DELIMITER ; |
J'ai rajouté la première ligne mais ça ne fonctionne pas
IF LOCATE(',',nomsPrenoms) THEN REPLACe(nomsPrenoms,';',' et ');
comment faire pour mettre nomsPrenoms modifiés dans une variable et réutilisé cette variable ensuite dans le second if ?
merci d'avance
Partager