SQL - SELECT ignoriert Groß- und Kleinschreibung
Achim
- datenbank
Hallo und frohe Weihnachten für alle !!!
Vielleicht ist ein lieber Weihnachtsmann unter Euch,
der mir eine Antwort auf meine Frage schenken kann.
mySQL-Abfrage in Perl, es soll festgestellt werden, ob der
User "Karl" in der Spalte "name" in der Tabelle "user"
vorhanden ist. "Karl" wohlgemerkt, "karl" interessiert nicht !
Die folgende Funktion überprüft das, ihr Rückgabewert
läßt sich dann als Boolescher Wert prüfen:
sub isentry
{
my $ex=$dbh->prepare("SELECT id FROM user WHERE name='Karl'");
$ex->execute;
my @entry=$ex->fetchrow_array;
return ($entry[0]);
}
Das Dumme: "karl" wird a u c h gefunden.
Man kann nun einen regulären Ausdruck verwenden:
...WHERE name REGEXP '^Karl$'... statt
...WHERE name='Karl'...
Das geht, 'karl' wird übergangen.
Ist das nun aber der korrekte Weg ?
Ich habe mich sehr gewundert, daß das überhaupt passiert,
ein String-Vergleich mit '=' sollte doch die Groß- und
Kleinschreibung berücksichtigen !!?
Gruß Achim.
Hallo!
mySQL-Abfrage in Perl, es soll festgestellt werden, ob der
User "Karl" in der Spalte "name" in der Tabelle "user"
vorhanden ist. "Karl" wohlgemerkt, "karl" interessiert nicht !
my $ex=$dbh->prepare("SELECT id FROM user WHERE name='Karl'");
VARCHAR kenn kein Unterschied zwischen Groß -und Kleinschreibung.
Du muß BINARY verwenden.
SELECT id FROM user WHERE BINARY name='Karl'
MfG, André Laugks
L-Andre @ gmx.de
Hallo,
Man kann nun einen regulären Ausdruck verwenden:
...WHERE name REGEXP '^Karl$'... statt
...WHERE name='Karl'...
Ja, das ist eine Möglichkeit. Die von MySQL selbst vorgeschlagene ist INSTR oder STRCMP zu nutzen.
http://www.mysql.com/doc/en/Case_sensitivity.html
weihnachticher Gruß
Axel