0.10 wird als 0.1 in Datenbank gespeichert

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • 0.10 wird als 0.1 in Datenbank gespeichert

    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-Code:
    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 müsste aber nach 0.5 kommen, weil es ja höher ist.

    Wie geht das?
    Gruß,
    Peter

  • #2
    seit wan ist 0.1 höher als 0.5
    Slava
    bituniverse.com

    Kommentar


    • #3
      Wie ich oben schon schrieb:

      0.1 ist in meinem Fall etwas anderes als 0.10 weil es sich um Versionsnummern handeln soll.
      Eine Version 0.10 ist höher als 0.1.
      Gruß,
      Peter

      Kommentar


      • #4
        du zerlegst sie in einen Array, sortierst sie mit usort und fügst sie wieder zusammen.

        speichern tust du sie als String. 1.10.1 wäre eh keine gültige Zahl.

        Kommentar


        • #5
          wenn die version aus 2 stellen besteht, kannst du so machen
          select SELECT
          version,
          substring(version,1,LOCATE(".",version)-1)*1 as eins ,
          substring(version,LOCATE(".",version)+1)*1 as zwei
          FROM
          tabelle
          WHERE
          id = '1'
          ORDER BY
          eins,zwei

          auch für 3 stellen kann es auf diese weise gemacht werden
          EDIT:
          abc.cf war falsch
          Zuletzt geändert von Slava; 06.11.2006, 02:00.
          Slava
          bituniverse.com

          Kommentar


          • #6
            Screw Driver - evtl. eine weitere spalte "reihenfolge" anlegen, die man (du?) manuell verändern kann. ansonsten wirst du bei versionsnummern "1.0.1a beta RC1" o.ä. irgendwann wieder vor dem gleichen problem stehen.

            Kommentar


            • #7
              Es wird nicht in der Form "0.1 alpha RC 2" geben sondern nur 0.x etc. Es ist für eine automatische Versionierung gedacht wenn etwas gespeichert wurde.
              Gruß,
              Peter

              Kommentar


              • #8
                dann kannst du auf eingebaute sortiermechanismen verzichten und dir selbst irgendeine wurst schreibst, wie slava es vorschlägt.

                Kommentar


                • #9
                  wenn dus nich als string haben willst musste wohl für jeden Teil der nummer ne eigene Spalte anlegen.
                  PHP Forum
                  Sessions in PHP
                  Loginsystem mit PHP erstellen

                  Kommentar


                  • #10
                    Das von slava sieht interessant aus, das werde ich mal testen. Wobei ich sowas weder bisher gesehen habe noch genau verstehe was da passiert.
                    Zuletzt geändert von Screw Driver; 06.11.2006, 00:58.
                    Gruß,
                    Peter

                    Kommentar


                    • #11
                      Original geschrieben von Screw Driver
                      Das von slava sieht interessant aus, das werde ich mal testen. Wobei ich sowas weder bisher gesehen habe noch genau verstehe was da passiert.
                      da war ein fehler, statt "abc.cf" muss version rein.
                      Slava
                      bituniverse.com

                      Kommentar

                      Lädt...
                      X