Bonjour,
Je souhaiterai savoir si il existe une fonction permettant la conversion d'une donnée numérique vers numérique avec décimal, par exemple 00057888 en 578.88 ?
Merci
Version imprimable
Bonjour,
Je souhaiterai savoir si il existe une fonction permettant la conversion d'une donnée numérique vers numérique avec décimal, par exemple 00057888 en 578.88 ?
Merci
J'ai trouvé la solution suivante :
Y a t-il mieux que cela ?Code:SELECT (1.0*57888/100)::NUMERIC(8,2)
D'ailleurs, petite bizarrerie :
Ceci :
Mais ceci :Code:
1
2
3 SELECT (1.0*00017073/100)::NUMERIC(8,2) ==> Retourne 170.73
Cela est-il normal ??Code:
1
2
3
4
5
6
7
8
9
10
11
12
13 CREATE OR REPLACE FUNCTION import.REFORMATE_PRIX(p_prix INTEGER) RETURNS NUMERIC(8,2) AS $$ BEGIN IF p_prix > 0 THEN RETURN (1.0*p_prix/100)::NUMERIC(8,2); ELSE RETURN 0; END IF; END; $$ LANGUAGE plpgsql; SELECT import.REFORMATE_PRIX(00017073); ==> Retourne 171
Ma donnée est numérique, le paramètre en entrée pour la fonction REFORMATE_PRIX() est pourtant de type INTEGER !
J'ai modifié le code selon votre exemple, le résultat reste le même.
Code:
1
2
3
4
5 CREATE OR REPLACE FUNCTION import.REFORMATE_PRIX(p_prix INTEGER) RETURNS NUMERIC(8,2) AS $$ BEGIN RETURN CAST(p_prix AS DECIMAL(8,2)) / 100.0; END; $$ LANGUAGE plpgsql;
Retourne toujours 171Code:SELECT import.REFORMATE_PRIX(17073);
bonjour , j'ai testé ta fonction et j'ai bien comme résultat 170.73
est ce que par hasard tu ne testes pas ta fonction pour insérer ou mettre à jour un champs integer? dans ce cas là la valeur serait casté en integer
Je n'en suis pas encore là mais le but est bien de mettre à jour un champ qui lui sera de type NUMERIC(8,2)
Sinon, je viens de trouver pourquoi ça ne m'affichai pas le bon résultat. J'utilise phpstorm pour bosser, et ce soft permet l'accès à une console SQL.
Je viens de tester directement sur la console sur le serveur sur linux et la en effet ça fonctionne comme il faut.
Donc c'est la faute du soft, doit y avoir un truc à paramétrer au niveau affichage des résultats.
Merci quand même pour vos réponses :-)