bonjour,
j'ai utilisé une fonction qui sert a parcourir une champ d'une colonne "intervenants" qui contient des noms séparé par virgules .
l'objectif est comparer les noms par des noms stockées dans une table "intervenant",ce dernier est composé par deux colonnes :"id_équipe"(contient le nom de l'équipe auquelle appartient un nom d'intervenant) et "nom_intervenant"(contient les listes des noms) .
.Donc , l'objectif est de comparer les noms par des noms stockées dans la table "intervenant" .Si le résultat est positive , on prend les étapes présenté dans le code.

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
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
delimiter |
CREATE FUNCTION DETERMINE1234(s VARCHAR(2000)) RETURNS int(2)
DETERMINISTIC
       BEGIN
               DECLARE open  INT;
               DECLARE close  INT;
               DECLARE someLimit  INT;
               DECLARE cpt int;
               DECLARE cs int;
               DECLARE cm int;
               DECLARE co int;
               DECLARE str  VARCHAR(255);
               DECLARE toFind  VARCHAR(2000);
               SET open = 1;
               SET close = 1;
               SET cpt=0;
               SET cs=0;
               SET cm=0;
               SET co=0;
               SET toFind = s ;
               SET someLimit = 5;
               SET str ='';
               WHILE close > 0 and open > 0 and someLimit > 0 DO
                 SET someLimit = someLimit -1;
                   SET toFind = SUBSTRING(toFind,open);
                   SET close = locate(',',toFind);
                   IF close > 2 THEN
                      SET str =SUBSTRING(toFind,2,close-2);
                      IF (Select id_equipe from intervenant where nom_intervenant=str='Deploiement Radio') OR 
                         (Select id_equipe from intervenant where nom_intervenant=str='Optimisation Huawei')OR
                         (Select id_equipe from intervenant where nom_intervenant=str='Optimisation NSN') OR
                         (Select id_equipe from intervenant where nom_intervenant=str='Support BSS Nord') OR
                         (Select id_equipe from intervenant where nom_intervenant=str='Support BSS Sud') THEN SET co=1;
                      END IF;
                      IF (Select id_equipe from intervenant where nom_intervenant=str='QDF') OR
                         (Select id_equipe from intervenant where nom_intervenant=str='Supervision Back Office') THEN SET cs=1;
                      END IF;
                      IF (Select id_equipe from intervenant where nom_intervenant=str='Maintenance') THEN SET cm=1; 
                      END IF;
                      SET toFind = SUBSTRING(toFind,close);
                   END IF;
               END WHILE;
               SET cpt=co+cs+cm;
               return cpt;
 
       END |
delimiter;
voila la requete sql que j'ai utiliser :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
update incident set groupes_intervenants=DETERMINE12(intervenants) WHERE Status like 'Closed'
le résultat va etre stocké dans le colonne "groupes_intervenants".
merci d'avance.