Andreas Görtz: Abfrage auf ein "Float" Feld gibt kein Ergebnis

Beitrag lesen

Hi Mike,

select beschreibung from karte where artikelnummer=241.2

Fließkommazahlen werden intern viel genauer gespeichert, als es nach außen hin aussieht. Versuch's selbst:

SELECT
    artikelnummer * 1.0000000000000000
FROM
    karte;

Es gibt aber ein Feld artikelnummer mit dem Wert 241.2, warum wird das nicht gefunden?

wahrscheinlich ist es intern eher 241.200000000000012 oder 241.199999999999987 oder ähnlich

Du musst dich bei Fließkommazahlen eigentlich immer für eine für dich akzeptable Genauigkeit festlegen und dann alle Werte innerhalb dieser auswählen:

SELECT
    beschreibung
FROM
    karte
WHERE
    ABS(artikelnummer - 241.2) < 0.000001

Gruß,
Andreas.