| |||||||
Du magst keine Werbung? Wir auch nicht!
Einfach registrieren und die Werbung ist weg. Diese Nachricht sehen nur nicht registrierte Nutzer.
![]() |
| | LinkBack | Themen-Optionen | Ansicht |
| | #1 (permalink) |
| Neuer User Registriert seit: Sep 2006
Beiträge: 620
| Korrektes Format für Nachkommazahlen in MySQL DB?
Hallo zusammen. Ich habe eine bestehende Datenbank und dort ein paar Spalten die ich als FLOAT definiert habe. Es befinden sich unter anderem Werte wie "1742.44" in dieser Spalte. Normalerweise sollte ich dann ja nach dem Wert suchen können?! Ich bekomme allerdings immer ein leeres Ergebnis wenn die Spalte FLOAT ist... Mit TEXT funktioniert es zwar aber ich bin auf die BETWEEN-Funktion angewiesen. Muss ich evtl. etwas bei der Definition der Spalte berücksichtigen? MfG Monk
__________________ Flash CS5 / Flex 3 / Flashdevelop / FB 4.6 |
| | |
| | #2 (permalink) |
| Techniker Registriert seit: Sep 2003 Ort: 64807
Beiträge: 16.326
|
wäre jetzt trivial, aber du vergleichst doch hoffentlich number mit number? zeig mal deinen sql-befehl. http://dev.mysql.com/doc/refman/5.1/...operators.html
__________________ die ultimative antwort auf alle programmierfragen: der debugger mfg h.g.seib www.SeibsProgrammLaden.de Geändert von hgseib (18-01-2012 um 16:28 Uhr) |
| | |
| | #3 (permalink) |
| Neuer User Registriert seit: Sep 2006
Beiträge: 620
|
Hallo. Ich suche über die PHPMyAdmin-Suche welche folgende Abfrage ausspuckt: PHP-Code: PHP-Code: Folgende Suchanfrage geht nicht: PHP-Code: PHP-Code: Laut den Docs sollte das auch bei der ersten BETWEEN-Abfrage eine 1 zurückgegeben werden falls so ein wert vorhanden ist: PHP-Code: PHP-Code: PHP-Code: Komische Sache ![]() MfG Monk
__________________ Flash CS5 / Flex 3 / Flashdevelop / FB 4.6 |
| | |
| | #4 (permalink) |
| Techniker Registriert seit: Sep 2003 Ort: 64807
Beiträge: 16.326
|
hmmm, kennst du die zwachtel? die liegt genau zwischen zieben und acht. SELECT * FROM `produkte` WHERE `laenge` BETWEEN '1346.26' AND '1346.26' welcher wert soll denn deiner meinung nach zwischen '1346.26' und '1346.26' liegen?
__________________ die ultimative antwort auf alle programmierfragen: der debugger mfg h.g.seib www.SeibsProgrammLaden.de |
| | |
| | #5 (permalink) |
| Neuer User Registriert seit: Sep 2006
Beiträge: 620
|
Laut den Docs genau dieser: 1346.26 Korrigiere mich wenn ich falsch liege, aber größer gleich und kleiner gleich mit dem identischen Wert ergibt diesen wert?! Und mit einer geraden Zahl klappt es ja (siehe oben das Beispiel mit 1000).
__________________ Flash CS5 / Flex 3 / Flashdevelop / FB 4.6 |
| | |
| | #6 (permalink) |
| Techniker Registriert seit: Sep 2003 Ort: 64807
Beiträge: 16.326
|
ja du hast recht! aber man sollte nicht alles glauben, nur weils auf einer internetseite steht ;-) was soll ich sage? die programmierer halt. dein trick mit 1000 kann nicht wirklich stimmen? da computer binär arbeiten sieht die 1000 und die 1346.26 für den computer etwas anders aus und keineswegs 'gerade'. probiere mal: .. BETWEEN '1000.0' AND '1000.0' ich denke mir das halt so: wenn man werte gruppieren will in einer breite von z.b. 10 dann würde nach dieser definition die 20 in die gruppe 10..20 und in die gruppe 20..30 gehören. das gehört sich einfach nicht ;-) für mich macht min <= x < max mehr sinn (siehe auch INTERVAL). teste halt vorher, ob min == max ist, dann kannst du diesen sonderfall ressourcensparender teste.
__________________ die ultimative antwort auf alle programmierfragen: der debugger mfg h.g.seib www.SeibsProgrammLaden.de Geändert von hgseib (18-01-2012 um 20:54 Uhr) |
| | |
| | #7 (permalink) |
| Neuer User Registriert seit: Sep 2006
Beiträge: 620
|
Für mich macht die Abfrage durchaus Sinn. Der Anwender kann per Slider, der zwei Thumbs besitzt, aus bestehenden Werten eine Eingrenzung vornehmen. Dabei ist die Grenze immer ein existierender wert (z.B. min 1732.23 und max 2055). Aus diesem Grund müssen die zwei Grenzwerte auch in den Ergebnissen auftauchen (die ich aus Preformancegründen erst nach der Filterung komplett nachlade) Zu dem Thema mit den BETWEEN und 1000: PHP-Code: Jetzt habe ich mir gedacht, da die Chance, dass sich zwei Werte in der zweiten Nachkommastelle unterscheiden gegen Null geht, dass ich den max Wert einfach um 0.01 erhöhe: PHP-Code: ABER: Wenn ich eine andere Nachkommastelle habe funktioniert es nicht: PHP-Code: Wenn ich die 1742.44 z.b. auf 1742.31 ändere, funktioniert es mit den +0.01 Soweit meine Tests es zeigen liegt es an der .44 ![]() Das ist doch doof... Notfalls muss ich deswegen auf Integer gehen und in Flash oder PHP die Nachkommastellen erzeugen ![]() Ich werde mal auf dem Produktivserver die gleichen Tests durchführen. Hoffentlich ist es dort nicht der Fall (diesen kann man evlt. nicht Anpassen, je nach dem an was es liegt) MfG Monk EDIT: Auf dem Produktivserver ist genau das gleiche Verhalten zu beobachten. EDIT 2: Anscheinend funktioniert es, wenn man den Min-Wert um -0.01 verringert und den Max-Wert um +0.01 erhöht. Ich muss dazu aber noch weitere Testsläufe durchführen
__________________ Flash CS5 / Flex 3 / Flashdevelop / FB 4.6 Geändert von dr monk (19-01-2012 um 07:11 Uhr) Grund: Hinzufügen des EDIT + EDIT 2 |
| | |
| | #8 (permalink) | |
| Techniker Registriert seit: Sep 2003 Ort: 64807
Beiträge: 16.326
| Zitat:
rein von der logig her (bzw. was man für logisch hält ;-) müsste es nach der beschreibung funktioniere. unterschiede könnte es durch unterschiedliche konvertierungen also integer und float (dennoch extrem unwahrscheinlich). aber float/ float kann nicht anders sein, auch wenn du einen anderen float-wert addierst. die sache beschäftigt übrigens auch andere. internetsuche: sql between inclusive or exclusive
__________________ die ultimative antwort auf alle programmierfragen: der debugger mfg h.g.seib www.SeibsProgrammLaden.de Geändert von hgseib (19-01-2012 um 09:36 Uhr) | |
| | |
| | #9 (permalink) |
| Neuer User Registriert seit: Sep 2006
Beiträge: 620
|
Ich habe mir mal bei Google ein paar Sachen unter dem Suchbegriff angesehen. Dort heißt es ja auch überall inklusive. Und ich hatte meine Abfragen ja auch mit >= ... <= getestet gehabt -> mit dem gleichen Problem. Es geht ja auch nicht (mehr) darum ob es inklusive oder exklusive ist. Nur woran es liegt, dass manche Nachkommastellen nicht funktionieren (andere dagegen schon). Ich werde mich mit dem Umstand vorerst zufrieden geben und mein offline Wiki dementsprechend ergänzen. Und falls ich doch mal zu viele Werte haben sollte, die sich nur in der zweiten Nachkommastelle unterscheiden, werde ich einfach alle Werte in der DB um den Faktor 10 vergrößern und das Problem in Flash/PHP beheben. ![]() Bei den Servern handelt es sich denn um XAMPP-Server (unterschiedliche Versionen / Einstellungen). Es wäre schon interessant ob das Problem auch bei anderen (neueren?) Versionen von MySQL/XAMPP auftreten. Die entsprechenden Beispiele dazu sind ja weiter oben vorhanden (falls es wer mal bei sich testen wollte) MfG Monk
__________________ Flash CS5 / Flex 3 / Flashdevelop / FB 4.6 |
| | |
![]() |
| Lesezeichen |
| Themen-Optionen | |
| Ansicht | |
| |
Ähnliche Themen | ||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| [Flash CS3] korrektes Ansprechen | king_konis | Flash Einsteiger | 1 | 29-05-2009 21:44 |
| Korrektes Ansprechen aller Instanzen eines MC | chrissy810 | ActionScript 2 | 6 | 25-09-2007 11:35 |
| MYSQL format fuer eine zelle mit 3+ ids | nxfxcom | PHP und MySQL | 7 | 10-01-2005 06:27 |
| korrektes XHTML: & Zeichen in der URL | olien | HTML und CSS | 6 | 22-06-2004 16:49 |
| korrektes format? | sauerkraut | Flash MX | 3 | 11-04-2004 17:05 |