2010-07-29 9 views
3

utilisant MySQL 5.0.27Que fait le premier argument de la fonction Decimal de MySQL?

Cette requête: SELECT CAST ('543,21' AS DECIMAL (100,2))

retours 543,21

ne donc celui-ci: SELECT CAST ('543,21 'AS DECIMAL (2,2)

En fait, j'ai de la difficulté à déterminer l'effet du paramètre. Je l'utilise pour agréger des valeurs numériques dans une colonne varchar (pour des raisons d'héritage !!) et arrondir à 2 décimales.

Dois-je simplement choisir un nombre élevé?

+0

Vous êtes sur de ça? Je viens d'exécuter la deuxième requête et elle renvoie .99. Quelle version de MySQL utilisez-vous? –

+0

'Utiliser MySQL 5.0.27' – Mchl

+0

C'est un résultat plutôt surprenant! En utilisant 5.0.27, mais de toute façon résolu maintenant, merci. – Lars

Répondre

5

Il décrit le nombre total de chiffres qu'un champ (ou une variable) pourra stocker. DECIMAL (100,2) - 100 chiffres totaux, 98 avant, 2 après un séparateur décimal DECIMAL (2,2) 2 chiffres totaux, 0 avant, 2 après un séparateur décimal

expliquée ici: http://dev.mysql.com/doc/refman/5.1/en/numeric-types.html

[ajouté]

Pour l'arrondi, utilisez simplement la fonction ROUND().

+0

Alors pourquoi ne pas 'SELECT CAST ('543.21' AS DECIMAL (2,2))' retourner '.21'? –

+0

Cela me rapporte 0,99. Quelle version de MySQL avez-vous? Il semble qu'il y ait eu quelques changements dans cette zone entre 5.0 et 5.1 http://dev.mysql.com/doc/refman/5.1/fr/precision-math-decimal-changes.html – Mchl

+0

On pourrait penser qu'il devrait jeter une erreur comme le fait SQL Server (dépassement arithmétique). (Juste mes $ 0,02.) –