Der Versuch, eine SELECT-Abfrage unter Verwendung eines Gleitkommawerts als Bedingung durchzuführen, führt häufig zu unerwartetem Verhalten. Das folgende Problem veranschaulicht diese Herausforderung:
<code class="sql">SELECT * FROM `table` WHERE `ident`='ident23' AND `price`='101.31';</code>
Diese Abfrage gibt null Zeilen zurück, obwohl der Wert 101,31 in der Datenbank für die Preisspalte erscheint. Durch das Entfernen der Preisbedingung wird die erwartete Zeile zurückgegeben.
Um dieses Problem zu beheben, ziehen Sie die folgenden Lösungen in Betracht:
Umwandeln des Gleitkommawerts in Ein DECIMAL-Typ vor dem Vergleich gewährleistet die richtige Genauigkeit:
<code class="sql">SELECT * FROM table WHERE CAST(price AS DECIMAL) = CAST(101.31 AS DECIMAL);</code>
Erwägen Sie, die Preisspalte in den DECIMAL-Typ zu ändern, der eine bessere Präzision für Geldwerte bietet:
ALTER TABLE `table` MODIFY COLUMN `price` DECIMAL;
Das obige ist der detaillierte Inhalt vonHier sind einige fragenbasierte Titel, die auf Ihrem bereitgestellten Text basieren und sich jeweils auf einen anderen Aspekt des Problems konzentrieren: Option 1 (Fokussierung auf das Problem): * Warum gibt meine MySQL-SELECT-Abfrage keine Antwort zurück?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!