sql >> Database >  >> RDS >> Mysql

Waarom zweeft MySQL round veel meer dan verwacht?

Wanneer u de query uitvoert:

SELECT * FROM some_table WHERE id = 123

U vertrouwt op de gebruikersinterface om de getallen met drijvende komma op te maken. De interface die u gebruikt, gebruikt twee tekens in plaats van meer. Er is immers geen informatie over het "juiste" nummer om te tonen.

U kunt de interface overtuigen om het juiste getal weer te geven door het getal op te maken als een string of als een decimaal. Bijvoorbeeld:

select format(some_float_field, 3)

zal dit converteren naar een string met drie decimalen. Een waarschuwing:het zal ook komma's toevoegen die u misschien niet wilt. Dit zou ook moeten werken:

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

Merk op dat u gemakkelijk kunt valideren dat de gegevens correct zijn door iets te doen als:

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

Houd er rekening mee dat u = . niet wilt gebruiken op drijvende-kommawaarden, maar dat begrijp je al.



  1. Door komma's gescheiden veld uitbreiden naar meerdere rijen in MySQL

  2. CakePHP:Hoe kan ik een HAVING-bewerking gebruiken bij het bouwen van query's met de zoekmethode?

  3. Hoe rijen te ordenen op groepssom in SQL

  4. 6 manieren om een ​​string te converteren naar een datum/tijd-waarde in SQL Server