Heim  >  Artikel  >  Datenbank  >  Warum schlägt meine MySQL-SELECT-Abfrage beim Vergleich von Floats fehl, funktioniert aber, wenn ich den Vergleich entferne?

Warum schlägt meine MySQL-SELECT-Abfrage beim Vergleich von Floats fehl, funktioniert aber, wenn ich den Vergleich entferne?

Patricia Arquette
Patricia ArquetteOriginal
2024-10-28 16:29:29450Durchsuche

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

Probleme beim Float-Vergleich in MySQL-SELECT-Abfragen lösen

Bei MySQL-SELECT-Abfragen können beim Vergleich von Float-Werten Genauigkeitsprobleme auftreten. Um dieses Problem zu beheben, untersuchen wir die folgende Frage:

Frage:

Warum schlägt eine SELECT-Abfrage mit einem Float-Gleichheitsvergleich fehl, während das Entfernen des Vergleichs das Richtige zurückgibt Reihe? Wie können wir die Gleitkommazahl vor der Operation in zwei Ziffern umwandeln, um eine erfolgreiche Übereinstimmung zu erzielen?

Antwort:

Das Problem ergibt sich aus der in MySQL inhärenten Gleitkommagenauigkeit. Um dieses Problem zu lösen, können wir die Float-Spalte in einen Dezimaltyp umwandeln, der die Genauigkeit auf eine bestimmte Anzahl von Stellen gewährleistet.

Lösung:

Die folgende Abfrage stimmt erfolgreich überein den Gleitkommawert, indem Sie ihn in eine Dezimalzahl umwandeln:

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

Alternative Lösung:

Alternativ können Sie erwägen, die Preisspalte in DEZIMAL zu ändern, was besser geeignet ist für den Umgang mit Geldwerten und bietet eine bessere Präzisionskontrolle.

Das obige ist der detaillierte Inhalt vonWarum schlägt meine MySQL-SELECT-Abfrage beim Vergleich von Floats fehl, funktioniert aber, wenn ich den Vergleich entferne?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn