Bonjour,
Je fais habituellement un extraction SQL pour obtenir une liste exploitable à partir d'une application. Mais récemment l'application a modifié des données par défaut pour certains champs, faisant passer la valeur par défaut de '999' à ' '.
Voici mon ancien script d'extraction :
Les champs pour lesquels le paramètre par défaut est passé de '999' à ' ' sont les 2 champs en rouge.
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 select 'M' || a.matric,b.etctit,b.etnomu,b.etpren,c.prufon, a.prgrgrrm,e.libelle,c.PRNEFEX,g.liblong,c.PRAFEMP,h.liblong from chm_ppr a,pet b,chm_ppra c,chm_tli d,chm_tli e,chm_tli f,chm_tli g,chm_tli h where a.nompop='AGJOUR' and c.nompop='AGJOUR' and b.codhop='010' and a.presmods in (' ','GC ') and a.matric=b.matric and a.matric=c.matric and c.praftp='P' and c.prufon=d.valeur and d.rubcod='PAFUFON' and a.prgrgrrm=e.valeur and e.rubcod='PGRGRAD' and c.tufcres=f.valeur and f.rubcod='TUFCRES' and c.prnefex=g.valeur and g.rubcod='PAFEMPL' and c.prafemp=h.valeur and h.rubcod='PAFFONC' order by b.etnomu,b.etpren,a.matric;
Je dois donc modifier mon script pour prendre en compte les lignes comprenant ' ' comme valeur par défaut en plus de '999'. Mais le problème c'est que d'autres champs du script n'acceptent pas que ces champs soient ' ' car il n'y a pas de correspondance et pas moyen d'en rajouter avec cette valeur ' ' dans l'application.
Je voulais donc utiliser la fonction replace pour transformer (juste pour mon extraction) les valeurs ' ' pour ces 2 champs (prnefex et prafemp) en '999', l'ancienne valeur par défaut, reconnue par les autres champs. La fonction replace marche dans le select, mais elle ne marche pas en revanche en étant placée dans la cause where, aucune ligne n'est obtenue. Si j'enlève les replace du where, la liste obtenue ne prendra pas compte des lignes dont la valeur par défaut est ' '. Que faire ?
Merci de m'indiquer si vous avez une solution pour résoudre ce problème, car moi je sature, peut-être que je suis trop fatigué en ce vendredi.
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 select 'M' || a.matric,b.etctit,b.etnomu,b.etpren,c.prufon, a.prgrgrrm,e.libelle,replace(c.prnefex,' ',9),g.liblong,replace(c.prafemp,' ',9),h.liblong from chm_ppr a,pet b,chm_ppra c,chm_tli d,chm_tli e,chm_tli f,chm_tli g,chm_tli h where a.nompop='AGJOUR' and c.nompop='AGJOUR' and b.codhop='010' and a.presmods in (' ','GC ') and a.matric=b.matric and a.matric=c.matric and c.praftp='P' and c.prufon=d.valeur and d.rubcod='PAFUFON' and a.prgrgrrm=e.valeur and e.rubcod='PGRGRAD' and c.tufcres=f.valeur and f.rubcod='TUFCRES' and replace(c.prnefex,' ',9)=g.valeur and g.rubcod='PAFEMPL' and replace(c.prafemp,' ',9)=h.valeur and h.rubcod='PAFFONC' order by b.etnomu,b.etpren,a.matric;
Cordialement,
Seb
Partager