Comprend rien à ton problème...
On va faire simple :
Tu as une variable "@flag" qui contient 7 ou 8. Si 7, alors "-" devant le nombre @val. Si 8 alors "+" devant le nombre @val.
Le nombre @val doit sortir sous la forme "s000", c'est à dire 3 chiffres, 0 leading 0 compris, et le signe devant.
Hypothèse 1
On se moque du signe original de @val, c'est @flag qui prime.
Code :
- select case @flag
- when 7 then '-' + right('000' + cast(abs(@val) as varchar), 3)
- when 8 then '+' + right('000' + cast(abs(@val) as varchar), 3)
- end
|
C'était ce que j'entendais par :
Arjuna a écrit :
ha, ben met juste abs() autour de ton val, comme dans mon cas où j'avais du négatif
|
Hypothèse 2
On prend en compte le signe original de @val, c'est à dire que s'il est +, alors on utilise celui précisé par @flag, sinon on utilise l'opposé de @flag.
Code :
- select case @flag
- when 7 then
- (
- case sign(@val)
- when 1 then "-"
- when 0 then "+" -- si c'est 0, alors c'est forcément le signe +
- when -1 then "+"
- end
- )
- + right('000' + cast(abs(@val) as varchar), 3)
- when 8 then
- (
- case sign(@val)
- when 1 then "+"
- when 0 then "+"
- when -1 then "-"
- end
- )
- + right('000' + cast(abs(@val) as varchar), 3)
- end
|
Voilà, selon l'hypothèse, ça doit marcher.
Message édité par Arjuna le 08-06-2005 à 18:55:30