Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [solved] MySQL, pole typu float oraz klausula WHERE
Forum PHP.pl > Forum > Bazy danych > MySQL
KirkoR
Witam, w tabeli InnoDB z kodowanie utf8 mam pole typu float.
Kod:
  1. WHERE float_field = '2.99'

nie działa
natomiast
  1. WHERE float_field LIKE '2.99'

Działa dobrze.
Dlaczego tak się dzieje, i co zrobić aby używać = a nie LIKE.
php programmer
float to nie string wiec powinno się podawać bez "uszu", tzn
  1. WHERE float_field = 2.99
KirkoR
też nie działa sad.gif

Rozwiazaniem jest:
  1. WHERE CONVERT(TABLE.FLOAT_FIELD, DECIMAL) = 2.99
Sedziwoj
Powodem jest sposób w jaki jest zapisywana liczba w formacie float.
Dlatego nie powinno się jej używać do reprezentacji np. pieniędzy bo przy dużej liczbie operacji mogą wyjść jakieś błędy, typu 0,01 + 0,02 = 0,04 (oczywiście to tylko nierzeczywisty przykład, bo przy tak małej liczbie operacji (jednej) raczej będzie ok.)
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.