sql >> Database teknologi >  >> RDS >> Mysql

Hvorfor flyder MySQL-runden meget mere end forventet?

Når du kører forespørgslen:

SELECT * FROM some_table WHERE id = 123

Du er afhængig af brugergrænsefladen til at formatere de flydende decimaltal. Den grænseflade, du bruger, bruger to tegn i stedet for flere. Der er jo ingen oplysninger om det "rigtige" nummer at vise.

Du kan overbevise brugerfladen om at vise det rigtige tal ved at formatere tallet som en streng eller som en decimal. For eksempel:

select format(some_float_field, 3)

vil konvertere dette til en streng med tre decimaler. En advarsel:den tilføjer også kommaer, som du måske ikke ønsker. Dette burde også virke:

select cast(some_float_field as decimal(8, 3))

Bemærk, at du nemt kan validere, at dataene er korrekte ved at gøre noget som:

select *
from some_table
where some_float_field between 1919.987 - 0.0001 and 1919.987 + 0.0001;

Bemærk, at du ikke ønsker at bruge = på flydende kommaværdier, men det forstår du allerede.



  1. Google Maps geokoder til at finde nærliggende steder fra MySQL-databasen

  2. Split strenge på den rigtige måde – eller den næstbedste måde

  3. Tilslutning af AnySQL Maestro til Salesforce.com

  4. Tilføj en indre joinforbindelse til mySQL GROUP_CONCAT-sætning