0.10 wird als 0.1 in Datenbank gespeichert

megapreisbrecher

Grünschnabel
Ich würde gerne Werte wie 0.10 in der Datenbank speichern. 0.1 ist in meinem Fall etwas anderes als 0.10 weil es sich um Versionsnummern handeln soll.

Als float kann ich dies nicht ablegen, als String stehe ich vor anderen Problemen. Wie kann ich nämlich die Werte sortieren?

Sieht momentan so aus bei mir:

PHP:
SELECT
  version
FROM
  tabelle
WHERE
  id = '1'
ORDER BY
  version ASC

Bei Werten von 0.1, 0.2, ... 0.10 sortiert es mir das falsch:

Code:
0.1
0.10
0.2
0.3
0.4
0.5
1.0
1.1 ...

0.10 sollte aber nach 0.5 kommen, weil es ja höher ist?

Wie geht das?
 
1. Wieso kannst du das nicht als Float speichern ?
2. Rein mathematisch ist 0.5 > 0.10

Code:
version float(5,3) nott null ... -> erlaubt z.B 0.100 (gesamt 5,nachkomma 3)
 
Die Datenbank weiß aber nicht, dass das Versionsnummern sind, für die sind das Zahlen. Eine Lösung wäre ein zusätzlicher Sortierindex, du sortierst nach dem und nicht nach den Versionsnummern.

Ansonsten speicher die Major- (vor dem Komma) und Minor-Versionsnummern (nach dem Komma) separat ab und füge sie in der Ausgabe wieder zusammen. So kannst du auch dieses Sortierproblem lösen (z.B. 1.11 wäre Major: 1; Minor 11).


Der Doc!
 
Oder speicher statt 0.5 0.05 ab - falls du sorge hast, es könnten mehr als 10 Versionen existieren.
 

Neue Beiträge

Zurück