[SQL allgemein] Werte "von bis" ausgeben

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

  • [SQL allgemein] Werte "von bis" ausgeben

    hi leute,

    hab da nen kleines verständnisproblemchen und hoffe, dass mir mal jemand die tomaten von den augen nimmt !

    und zwar hab ich ne tabelle, mit den spalten value und userID

    die spalte value ist mit zahlen, als 100, 200, 300, 400 usw
    bestückt...

    wenn ich nun :
    PHP-Code:
    WHERE userID='name' AND value BETWEEN '100' AND '500' 
    verwende klappt das auch und er gibt mir die gewünschten 5 tupeln aus , solange die spalte als Typ int hat, wieso geht aber nicht richtig, wenn die spalte datentyp Text hat ?
    dann kommen auch datensätze 100-500, 600-900 nicht, aber wo values 1000 steht usw werden die wieder angezeigt...
    ähnlich, als hätte ich nen 100+ wildcard beim select gewählt

    für aufklärung wäre ich dankbar !
    Coder never die, they just GOSUB without RETURN

    Mein System

  • #2
    Wenn value vom Typ Zahl ist, warum übergibst du String an die DB? Wenn du so 'n Unsinn machst, dann sollst du dich nicht über das Ergebnis wundern!

    Kommentar


    • #3
      Re: [SQL allgemein] Werte "von bis" ausgeben

      Wenn du Text-Datentypen verwendest, dann werden natürlich Stringvergleiche gemacht - und die liefern nun mal "andere" Ergebnisse als die Vergleiche echter Zahlen, weil sie Zeichen für Zeichen vergleichen.

      So ist "19" bspw. grösser als "120" - weil beim Stringvergleich zuerst das erste Zeichen verglichen wird, also "1", bei beiden gleich; also nächstes Zeichen betrachten, "9" vs. "2" - da ist die "9" grösser, weil sie nach der "2" in der Zeichentabelle kommt. Abweichung gefunden, Vergleich kann an dieser Position abgebrochen werden - Ergebnis: "19" ist grösser als "120".
      I don't believe in rebirth. Actually, I never did in my whole lives.

      Kommentar

      Lädt...
      X