Rajouter des 0 en début en fonction du nombre de caractères du champ
Bonjour.
Je cherche, par requete sql, a cadrer entre un nr dans le module factures d'Oracle Financial et le nr equivalent dans le module comptabilite genererale d'Oracle Financial.
Cote AP (module factures), le champ contient des 0 de facon a arriver a 9 caracteres. Dans le module GL (comptabilite generale), le champ contient uniquement le nr.
Par exemple dans AP j'ai 000012546 et dans GL j'ai 12546
De temps a autre, le champ a ete mal alimente et contient des caracteres non numeriques. Exemple 12546. ou une date au lieu du nr
Je cherche a faire apparaitre les ecarts montants (ou l'absence du nr cote GL) entre AP et GL.
J'ai deux solutions pour le faire :
1) to_number sur chaque champ (cote AP et cote GL) : si le champ contient un caractere non numerique, la requete tombe en erreur
2) rajouter des 0 dans le champ cote GL.
Pour faire ce point 2), j'ai, dans le select, rajoute la chose suivante :
Code:
1 2 3 4 5 6 7 8 9 10
|
select
......
(case length(gl.ATTRIBUTE14) when 1 then lpad(gl.ATTRIBUTE14,0,8) when 2 then lpad(gl.ATTRIBUTE14,0,7) when 3
then lpad(gl.ATTRIBUTE14,0,6) when 4 then lpad(gl.ATTRIBUTE14,0,5)
when 5 then lpad(gl.ATTRIBUTE14,0,4) when 6 then lpad(gl.ATTRIBUTE14,0,3)
when 7 then lpad(gl.ATTRIBUTE14,0,2) when 8 then lpad(gl.ATTRIBUTE14,0,1) else gl.ATTRIBUTE14)
from
where |
J'avais aussi essaye :
Code:
1 2 3 4 5 6 7 8 9 10 11
|
select
......
(case gl.ATTRIBUTE14 when length(gl.ATTRIBUTE14) = 1 then lpad(gl.ATTRIBUTE14,0,8) when length(gl.ATTRIBUTE14) = 2 then lpad(gl.ATTRIBUTE14,0,7) when length(gl.ATTRIBUTE14) = 3
then lpad(gl.ATTRIBUTE14,0,6) when length(gl.ATTRIBUTE14)=4 then lpad(gl.ATTRIBUTE14,0,5)
when length(gl.ATTRIBUTE14)=5 then lpad(gl.ATTRIBUTE14,0,4) when length(gl.ATTRIBUTE14)=6 then lpad(gl.ATTRIBUTE14,0,3)
when length(gl.ATTRIBUTE14)=7 then lpad(gl.ATTRIBUTE14,0,2) when length(gl.ATTRIBUTE14)=8 then lpad(gl.ATTRIBUTE14,0,1) else gl.ATTRIBUTE14)
from
where |
Apres avoir fait differents essais dans Toad qui m'a annonce un "missing keyword", j'ai essaye la chose suivante :
Code:
1 2 3 4 5 6 7 8 9 10
|
select
------
(case length(gl.ATTRIBUTE14) when 1 then lpad(gl.ATTRIBUTE14,0,8) when 2 then lpad(gl.ATTRIBUTE14,0,7) when 3
then lpad(gl.ATTRIBUTE14,0,6) when 4 then lpad(gl.ATTRIBUTE14,0,5)
when 5 then lpad(gl.ATTRIBUTE14,0,4) when 6 then lpad(gl.ATTRIBUTE14,0,3)
when 7 then lpad(gl.ATTRIBUTE14,0,2) when 8 then lpad(gl.ATTRIBUTE14,0,1) else lpad(gl.ATTRIBUTE14,0,0))
from
where |
J'ai encore le message "Missing keyword".
Comment puis-je resoudre mon probleme et rajouter des 0 pour que le champ nr dans GL ait le meme format que celui dans AP et, ainsi, cadrer ?
Merci.
Cdlt.