Maison  >  Article  >  base de données  >  Pourquoi ma requête MySQL SELECT échoue-t-elle lors de la comparaison des flotteurs, mais fonctionne-t-elle lorsque je supprime la comparaison ?

Pourquoi ma requête MySQL SELECT échoue-t-elle lors de la comparaison des flotteurs, mais fonctionne-t-elle lorsque je supprime la comparaison ?

Patricia Arquette
Patricia Arquetteoriginal
2024-10-28 16:29:29450parcourir

Why Does My MySQL SELECT Query Fail When Comparing Floats, But Works When I Remove the Comparison?

Résolution des problèmes de comparaison de flotteurs dans les requêtes MySQL SELECT

Dans les requêtes MySQL SELECT, des problèmes de précision peuvent survenir lors de la comparaison des valeurs flottantes. Pour résoudre ce problème, explorons la question suivante :

Question :

Pourquoi une requête SELECT avec une comparaison d'égalité flottante échoue-t-elle, alors que la suppression de la comparaison renvoie le bon rangée? Comment pouvons-nous convertir le flottant à 2 chiffres avant l'opération pour une correspondance réussie ?

Réponse :

Le problème provient de la précision inhérente à la virgule flottante dans MySQL. Pour résoudre ce problème, nous pouvons convertir la colonne float en un type décimal, ce qui garantit la précision d'un nombre spécifique de chiffres.

Solution :

La requête suivante correspond avec succès la valeur flottante en la convertissant en décimal :

SELECT * FROM `table` WHERE CAST(`price` AS DECIMAL) = CAST(101.31 AS DECIMAL);

Solution alternative :

Vous pouvez également envisager de changer la colonne de prix en DECIMAL, ce qui est plus adapté pour gérer les valeurs monétaires et offre un meilleur contrôle de précision.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn