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é
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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