web-dev-qa-db-fra.com

Arrondi à 2 décimales en SQL

chaque fois que je veux arrondir à 2 décimales quand il s'agit de zéros, il ne veut pas l'arrondir ... comment pourrais-je l'arrondir à 2 décimales avec des zéros à la fin qui me donnerait 92,00 au lieu de seulement 92 ???

SELECT ROUND(COLUMN_NAME,2) FROM ....

ça me donne

COLUMN_NAME
92

mais je veux

COLUMN_NAME
92.00

J'ai utilisé TO_CHAR et cela a fonctionné

ROUND(TO_CHAR(COLUMN_NAME),2)

merci les gars!

18
Manual

vous pouvez essayer la fonction TO_CHAR pour convertir le résultat

par exemple.

SELECT TO_CHAR(92, '99.99') AS RES FROM DUAL

SELECT TO_CHAR(92.258, '99.99') AS RES FROM DUAL

J'espère que ça aide

22
Rohan

Essayez d'éviter le formatage dans votre requête. Vous devez renvoyer vos données dans un format brut et laisser l'application réceptrice (par exemple, un service de reporting ou une application utilisateur final) effectuer le formatage, c'est-à-dire l'arrondi, etc.

Le formatage des données dans le serveur rend plus difficile (voire impossible) le traitement ultérieur de vos données. Vous voulez généralement exporter la table ou faire une agrégation, comme la somme, la moyenne, etc. Comme les nombres arrivent sous forme de chaînes (varchar), il n'y a généralement pas de moyen facile de les traiter davantage. Certains concepteurs de rapports refuseront même d'offrir la possibilité d'agréger ces "nombres".

De plus, l'utilisateur final verra le formatage spécifique au pays du serveur au lieu de son propre PC.

Tenez également compte des problèmes d'arrondi. Si vous arrondissez les valeurs sur le serveur et effectuez encore quelques calculs (en supposant que le client est en mesure de rétablir les chaînes de nombres en un nombre), vous finirez par obtenir des résultats erronés.

7
alzaimar

Essayez d'utiliser la commande COLUMN avec l'option FORMAT pour cela:

COLUMN COLUMN_NAME FORMAT 99.99
SELECT COLUMN_NAME FROM ....
4
Aaron

Cela fonctionne aussi. L'instruction ci-dessous arrondit à deux décimales.

SELECT ROUND (92.258,2) parmi dual;

2
newbie