Bei einer MySql-Query wird in Strings Groß-/Kleinschreibung ignoriert.
SELECT * FROM table_x WHERE a = 'A'; ist identisch mit SELECT * FROM table_x WHERE a = 'a';
Mit der Option "BINARY" kann ich erreichen, dass dies nicht identisch ist - Groß-/Kleinschreibung wird dann nicht beachtet. Aber: Leider habe ich hier auf verschiedenen Systemen Probleme mit Sonderzeichen (ü, ö, ...). Dort werden diese als nicht identisch erkannt, obwohl sie es sein sollten.
Daher die Frage: Kennt jemand eine alternative Möglichkeit Abfragen case-sensitiv zu machen, außer BINARY?
Du kannst pro Tabelle (oder vielleicht sogar pro Feld, das weiß ich nicht so genau) den Zeichensatz definieren. bei dem Zeichensatz kannst du auch unterscheiden ob es Case Sensitive sein soll. z.B. es gibt latin1_general_cs (Case Sensitive) und latin1_general_ci (Case Insensitive)
Wenn du also Groß-/Kleinschreibung unterscheiden möchtest solltest du den Zeichensatz ändern.
Mittlerweile hab ich das Handbuch auch genauer gelesen. Da steht leider drin:
STRCMP() verwendet zur Durchführung von Vergleichsoperationen den aktuellen Zeichensatz. Insofern wird die Groß/Kleinschreibung bei Vergleichen standardmäßig nicht unterschieden, sofern nicht mindestens einer der Operanden ein Binär-String ist.
Habs probiert... laut MySql-Handbuch ist strcmp case-sensitive, aber wenn ich das ausprobiere, macht mein MySql-Server das leider nicht so... Gibt es da vielleicht weitere Parameter oder geheimnisvolle Tricks?