Rudi: Schock: mysql nicht casesensitiv???

Hi,

ich stelle gerade halb geschockt, halb amüsiert fest, daß einige meiner Abfragen in php/mysql nicht casesensitiv sind, also:

$query = "update usertable set UserAktiv="1", UserLastvisit="".$Datum."", UserIP="$UserIP" where UserName = "$Username" AND UserAlter = "$useralter"";

Funktioniert sowohl mit Username Rudi, als auch rUdI :-)

Kann ich das ändern, wenn ich denn möchte?

Grüße

Rudi

  1. Halihallo Rudi

    $query = "update usertable set UserAktiv="1", UserLastvisit="".$Datum."", UserIP="$UserIP" where UserName = "$Username" AND UserAlter = "$useralter"";
    Funktioniert sowohl mit Username Rudi, als auch rUdI :-)
    Kann ich das ändern, wenn ich denn möchte?

    http://www.mysql.com/doc/en/Case_Sensitivity_Operators.html

    Viele Grüsse

    Philipp

  2. hi,

    ich stelle gerade halb geschockt, halb amüsiert fest, daß einige meiner Abfragen in php/mysql nicht casesensitiv sind [...]

    Funktioniert sowohl mit Username Rudi, als auch rUdI :-)

    wenn du case-sensivity haben willst, benutze BLOB- statt TEXT-spalten.

    (bei varchar o.ä. musst du allerdings wohl weiterhin auf den von Philipp genannten link zurückgreifen ...)

    gruss,
    wahsaga

    1. Halihallo wahsaga

      wenn du case-sensivity haben willst, benutze BLOB- statt TEXT-spalten.

      Ich würde sagen, dass eben BLOB der falsche Datentyp wäre. BLOB
      steht ja für "typenlose binäre Daten". Ein String hat sehr wohl
      einen definierten Typ und der ist eben TEXT oder CHAR.

      Ich halte für Texte und Strings immer noch die TEXT oder CHAR
      Types für "verwanter", auch wenn man diese bei Case-Sensitivity
      in den BINARY-Typ casten muss. Aber nur wegen dem auf BLOB's
      umsteigen halte ich für etwas übertrieben (es gibt ja in dem Sinne
      keinen grossen Nachteil, aber es ist zweckentfremdend).

      Viele Grüsse

      Philipp

      1. hi,

        Aber nur wegen dem auf BLOB's
        umsteigen halte ich für etwas übertrieben (es gibt ja in dem Sinne
        keinen grossen Nachteil, aber es ist zweckentfremdend).

        na ja, für so "zweckentfremdet" würde ich sie gar nicht mal halten.

        http://www.mysql.com/doc/de/BLOB.html (BLOB und TEXT werden hier übrigens vom manual auf _einer_ seite abgehandelt, sicher nicht ganz grundlos) sagt dazu:

        "Die vier TEXT-Typen TINYTEXT, TEXT, MEDIUMTEXT und LONGTEXT entsprechen den vier BLOB-Typen und haben dieselben maximalen Längen und denselben Speicherbedarf. Der einzige Unterschied zwischen BLOB- und TEXT-Typen ist, dass beim Sortieren und Vergleichen bei BLOB-Werten Groß-/Kleinschreibung berücksichtigt wird, bei TEXT-Werten dagegen nicht. Mit anderen Worten ist ein TEXT ein BLOB ohne Berücksichtigung der Groß-/Kleinschreibung."

        gruss,
        wahsaga

        1. Halihallo wahsaga

          na ja, für so "zweckentfremdet" würde ich sie gar nicht mal halten.

          Deine Argumentation ist natürlich richtig. Ich bin einfach gegen
          diese BLOB's. Für mich sind das Datentypen für "höchst binäre" Daten,
          wie z.B. ein Bild, ein Bitvektor, ein Sounddatei, ein Bitstring oder
          Ähnlichem. Ein Text ist und bleibt für mich ein TEXT bzw. eine
          Ansammlung von Characters => (VAR)CHAR. Ob man nun zu einem BINARY
          casten muss oder nicht.
          Ich schätze, ich nehme es hier wiedermal übergenau :-)

          http://www.mysql.com/doc/de/BLOB.html (BLOB und TEXT werden hier übrigens vom manual auf _einer_ seite abgehandelt, sicher nicht ganz grundlos) sagt dazu:

          Bestimmt ist es nicht grundlos, die Datentypen sind nämlich intern
          _genau_ dasselbe, nur, dass der eine als BINARY gecastet wird und
          der andere als CHAR; aber gespeichert werden sie beide _genau_
          gleich.

          Viele Grüsse

          Philipp