Toon posts:

[MySQL] filteren op decimale double waarde werkt niet

Pagina: 1
Acties:

Verwijderd

Topicstarter
De applicatie die ik aan het opzetten ben heeft een table om resultaten van chemische analyses op te slaan, een van de fields is "nh3" de waarden zijn double(3,1).

stel het field bevat de volgende waarden (in 4 rows dus)

11.0
11.1
11.2
11.0

Als ik wil gaan filteren op 11.0 gaat dit goed, ik krijg row 1 en 4 terug. Als ik ga filteren op 11.1 of 11.2 krijg ik geen enkele row terug. Er wordt geen error gegenereerd, dus de query levert geen problemen op.
Heeft iemand een idee hoe dat komt? BVD.

  • pjvandesande
  • Registratie: Maart 2004
  • Laatst online: 21-05 14:59

pjvandesande

GC.Collect(head);

Bij een select krijg je wel die waardes terug, het is niet dat de komma's precieser zijn.

En wat je is query die je excecute?

  • sjroorda
  • Registratie: December 2001
  • Laatst online: 17:29
De double(3,1)-constructie is puur voor de representatie; het kan dus goed zijn dat de in de DB opgeslagen waarden niet 11.2 zijn, maar 11.20001 of zo, en dan klopt het inderdaad dat je ze niet terug krijgt.

Verwijderd

Topicstarter
questa schreef op 12 juli 2004 @ 13:48:
En wat je is query die je excecute?
De query die ik execute is:

SELECT * FROM result_ureum
WHERE nh3 = 11.3

Als ik de query aanpas door komma te gebruiken ipv punt (gequote om syntax problemen te voorkomen) krijg ik hetzelfde resultaat, geen records gereturned.


@sjoorda, de waarden die opgeslagen zijn zijn hebben maar 1 decimaal, ik heb ze namelijk handmatig ingevoerd.

[ Voor 14% gewijzigd door Verwijderd op 12-07-2004 13:54 ]


  • Knutselsmurf
  • Registratie: December 2000
  • Laatst online: 21:46

Knutselsmurf

LED's make things better

Een opties is om er een integer van te maken, dus 110 opslaan voor 11.0 en 111 voor 11.1 enzovoort. Dan weet je wel zeker dat het exact klopt. Je zult dan uiteraard wel zelf het een en ander moeten schrijven om het juist weer te geven.

- This line is intentionally left blank -


Verwijderd

Topicstarter
Knutselsmurf schreef op 12 juli 2004 @ 13:56:
Een opties is om er een integer van te maken, dus 110 opslaan voor 11.0 en 111 voor 11.1 enzovoort. Dan weet je wel zeker dat het exact klopt. Je zult dan uiteraard wel zelf het een en ander moeten schrijven om het juist weer te geven.
Tsja, symptoom bestrijding...

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 10-05 18:53

Bosmonster

*zucht*

Vreemd wel trouwens.. net even geprobeerd, maar met hand ingevoerde gegevens krijg ik uit MySQL netjes de goede waarden terug... zelfs bij 11.2 ;)

[ Voor 7% gewijzigd door Bosmonster op 12-07-2004 14:03 ]


Verwijderd

Topicstarter
Ok, heb alle "evil" records verwijderd en nieuwe toegevoegd. Resultaat: filteren werkt weer. Ik snap niet waaraan het kan liggen. De waarden waren goed, juiste aantal decimalen, geen alphanumerieke waarden oid. Erg vreemd, iig dank voor de reacties.

  • pjvandesande
  • Registratie: Maart 2004
  • Laatst online: 21-05 14:59

pjvandesande

GC.Collect(head);

Knutselsmurf schreef op 12 juli 2004 @ 13:56:
Een opties is om er een integer van te maken, dus 110 opslaan voor 11.0 en 111 voor 11.1 enzovoort. Dan weet je wel zeker dat het exact klopt. Je zult dan uiteraard wel zelf het een en ander moeten schrijven om het juist weer te geven.
Dit is natuurlijk geen nette oplossing. :Y)

Ik heb het ook even geprobeer (geen MySQL maar MSSQL) en dat geeft geen problemen, ik heb hier geen MySQL draaien dus zou het voor MySQL niet weten maar ik zie dat BosMonster het al voor je heeft getest en dat het daar wel werkt.

edit:

Het is al opgelost zie ik.

[ Voor 4% gewijzigd door pjvandesande op 12-07-2004 14:05 ]


  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 10-05 18:53

Bosmonster

*zucht*

Wel opletten dat je bij je applicatie met invoeren ook alleen goed afgeronde gegevens invult. PHP is ook niet al te precies als het om floats gaat.

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

Bosmonster:
Wel opletten dat je bij je applicatie met invoeren ook alleen goed afgeronde gegevens invult. PHP is ook niet al te precies als het om floats gaat.
Je kunt hiervoor het beste sprintf () gebruiken.

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz

Pagina: 1