Mysql
 sql >> Base de données >  >> RDS >> Mysql

Pourquoi MySQL tourne-t-il bien plus que prévu ?

Lorsque vous exécutez la requête :

SELECT * FROM some_table WHERE id = 123

Vous comptez sur l'interface utilisateur pour formater les nombres à virgule flottante. L'interface que vous utilisez utilise deux caractères plutôt que plus. Après tout, il n'y a aucune information sur le "bon" numéro à afficher.

Vous pouvez convaincre l'interface d'afficher le bon nombre en formatant le nombre sous forme de chaîne ou de nombre décimal. Par exemple :

select format(some_float_field, 3)

le convertira en une chaîne avec trois décimales. Une mise en garde :cela ajoutera également des virgules que vous ne voudrez peut-être pas. Cela devrait également fonctionner :

select cast(some_float_field as decimal(8, 3))

Notez que vous pouvez facilement vérifier que les données sont correctes en procédant comme :

select *
from some_table
where some_float_field between 1919.987 - 0.0001 and 1919.987 + 0.0001;

Notez que vous ne voulez pas utiliser = sur les valeurs à virgule flottante, mais vous le comprenez déjà.