datanbankabfrage case-sensitiv???

bad taste

Erfahrenes Mitglied
hi ich hab ein prob.....kann man bei ner mysql-abfrage mit php einstellen, dass sie nicht case-sensitiv is......ich hab nämlich nen server mit der suche und das funzt auch alles, nur is die scheiss scuhe schein´bar case-sensitiv, obwohl ich dachte, das das eigendlich bei mysql nie der fall wäre...????

need help....

//bad taste
 
also das heisst so:

$query = "select * from table1 where message like '%dieter%'";


also natürlich sehr viel länger und komplizierter, aber das is alles, worauf es ankommt......

also das ganze is ne suche durch ne datenbank und das funzt wunderbar....hab ja auch ein tut dazu geschreiben:) aber er scheint da unterschiede zu machen......wenn ich z.b. Ö eingebe bekomme ich nur ein result, bei ö aber ganz viele.....und das will ich net, es soll also auch so was wie nAchRicHT gefunden werden, also net case-sensitiv......

//blz brauch help

//bad taste
 
bei mysql keine chance soweit ich weiss
du kannst nur die abfrage zwei mal durchlaufen lassen soll heissen
das du mit php die abfrage noch mal machst nur vorher den string der abgefragt wird mit uppercase veränderst und dann übergibst
so könnt ich mir ne lösung vorstellen bin natürlich auch für andere lösungsvorschläge zu haben wenn sie besser sind

mfg

leukos
 
naja das is mir klar, aber das is auch schiesse.

dann hat man ja echt keine chance so schreibfehler wie BeriCht zu finden......das is shit....das geht bestimmt irgenwie oder weisst du explizit, dass das net geht in mysql????? oder kannst du nur keien lösung?????

//bad taste
 
Also... eine Abfrage mit LIKE ist in der Regel case-insensitive. Das Problem liegt bei den Sonderzeichen, zu denen auch die deutschen Umlaute gehören. Als ich in mein Messageboard eine Suchfunktion einbauen wollte, bin ich auf dieses Problem gestoßen. Allerdings lagen die Textdaten in der Datenbank sowieso schon HTML-codiert vor, also mit Ö statt Ö, ä statt a etc. Also hab ich den Suchstring einfach durch htmlentities() laufen lassen.
"Beispielweise... also nicht beispielweise", das hab ich wirklich so :)
PHP:
$result = mysql_query("SELECT * FROM messages WHERE msg LIKE '%".htmlentities($s)."%' ORDER BY time DESC");
Vorteil: Es funktioniert.
Nachteil: Man kann die Daten später schlechter editieren. (Oder gibt es eine Umkehrfunktion zu htmlentities()?)
 
jo das weiss ich auch.....

den kram hab ich ja auch gemacht, aber mit ner andern funktion......ich glaub es war string_replace(...) oder so....da kannste dann hin und zurück machen.....

also is das net mein problem...ich hab das mit dem ö und dem Ö nur gemacht, weil das ja net so oft vorkomm.....bei E und e hätte ich tausende ergebnisse gehabt:)

//bad taste
 
Tja... also wie gesagt, standartmäßig sind die String-Abfragen mit LIKE case-insensitive. Siehe http://www.mysql.com/doc/S/t/String_comparison_functions.html

The following two statements illustrate that string comparisons are case insensitive unless one of the operands is a binary string:

mysql> select 'abc' LIKE 'ABC';
-> 1
mysql> SELECT 'abc' LIKE BINARY 'ABC';
-> 0


[edit]Vielleicht liegt´s ja daran, dass deine Strings binär gespeichert sind... oder so. Geht das überhaupt? ;)[/edit]
 
Zuletzt bearbeitet:
Zurück