[gelöst] Zahlen in Varcharfeld vergleichen...

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

  • [gelöst] Zahlen in Varcharfeld vergleichen...

    Hi,

    ich habe eine SQL Tabelle in der Sport-Ergebnisse stehen. Für beide Mannschaften gibt es je eine eigene Spalte, d.h. Heimtore und Auswärtstore.

    Ich möchte jetzt alle Heimsiege anzeigen können, d.h alle Spiele wo Heimtore>Auswärtstore.

    Mein Problem ist jetzt, dass mir das nicht richtig sortiert wird.
    Der Fehler ist natürlich, dass ich beide Tabellen als Varchar statt als Integer definiert habe.
    Dies ist jedoch notwendig, da es auch ein Ergebnis 0:0 geben kann.

    Es gibt also zwei Lösungen, oder?
    Entweder kann ich auch bei einem Integer erkennen das tatsächllch 0:0 eingegeben wurde und es nicht einfach so autmatisch den Wert besitzt,
    oder es gibt eine Möglichkeit auch ein Varchar-Feld nummerisch zu sortieren, sodass 8:23 auch als Auswärtssieg erkannt wird.

    Ich hoffe mir kann jemand helfen!

    Vielen Dank!

    Gruß

  • #2
    Hallo,

    Zitat von ComicKopf Beitrag anzeigen
    Entweder kann ich auch bei einem Integer erkennen das tatsächllch 0:0 eingegeben wurde und es nicht einfach so autmatisch den Wert besitzt
    Wenn du die Spalte [FONT="Courier New"]tinyint unsigned default null[/FONT] machst, kannst du leicht zwischen null (bisher keine Daten) und 0 (bisher keine Tore) unterscheiden (wobei ich aber trotzdem den Unterschied nicht verstehe).

    Zitat von ComicKopf Beitrag anzeigen
    oder es gibt eine Möglichkeit auch ein Varchar-Feld nummerisch zu sortieren, sodass 8:23 auch als Auswärtssieg erkannt wird.
    Die gibt es, wenn du im Select-Statement die Spalte castest. In diesem Falle ist die einfachste Variante, die Spalte überall mit 0 zu addieren, wo sie verwendet/verglichen wird.

    Z. B.
    Code:
    select * from match
    where home + 0 > visitor + 0
    order by home + 0 desc, visitor + 0 asc
    Gruß,

    Amica
    [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
    Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
    Super, danke!
    [/COLOR]

    Kommentar


    • #3
      super, das hat funktioniert...

      wieso klappt es denn, wenn man eine 0 addiert? Würde das gerne noch verstehen

      Vielen Dank!

      Kommentar


      • #4
        Weil MySQL dann das Ergebnis betrachtet, welches wegen der Addition in jedem Falle eine Zahl (oder null) ist. Wenn MySQL es als Strings vergleicht, fängt es natürlich ganz links an (z. B. bei der '1' von '123') und vergleicht Zeichen für Zeichen. Da die '1' von '123' bereits kleiner ist als die '9' von '99', ist MySQL der Meinung '123' sei kleiner als '99'. Durch das +0 machst du Zahlen draus und dann kann MySQL dir auch sagen, dass 123 natürlich größer ist als 99.

        Das ist übrigens nicht nur bei MySQL so, sondern auch in jeder nicht streng typisierten Programmiersprache.
        [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
        Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
        Super, danke!
        [/COLOR]

        Kommentar


        • #5
          Ok, gut zu wissen...

          Ja, dann vielen Dank, hast mir echt weitergeholfen!

          Gruß

          Kommentar

          Lädt...
          X