Binary nur für where..like ausschalten
Horst
- datenbank
Hallo,
da hab ich nun eine Tabelle 'word' mit 'words'. Das Feld 'word' ist varchar(100)binary.
Da "binary", greift ein
SELECT word FROM words WHERE word like 'Kaffee'
anders als ein
SELECT word FROM words WHERE word like 'kaffee'
Genaugenommen liefert nur "Kaffe" ein paar DS, "kaffee" hingegen Keine, ich möchte jedoch, dass "Kaffee" oder "kaffee" dasselbe Ergebnis liefern.
Welche Möglichkeiten gibt es?
Viele Grüße,
Horst Haselhuhn
n'abend,
da du nicht angegeben hast, welches DBMS du nutzt, antworte ich einfach mal für MySQL5.
da hab ich nun eine Tabelle 'word' mit 'words'. Das Feld 'word' ist varchar(100)binary.
Genaugenommen liefert nur "Kaffe" ein paar DS, "kaffee" hingegen Keine, ich möchte jedoch, dass "Kaffee" oder "kaffee" dasselbe Ergebnis liefern.Welche Möglichkeiten gibt es?
Dein Stichworte heißen COLLATE und CONVERT()
weiterhin schönen abend...
Hello,
Wenn diese Splate aber hauptsächlich für derartige Abfrage vorgehalten wird, dann sollte Horst überlegen, ob nicht besser das "binary" von der Spalte zu nehmen wäre, und für die wenigen Abfragen, bei denen es dann noch gebraucht wird, gesetzt wird.
Harzliche Grüße vom Berg
http://bergpost.annerschbarrich.de
Tom
n'abend,
Wenn diese Splate aber hauptsächlich für derartige Abfrage vorgehalten wird, dann sollte Horst überlegen, ob nicht besser das "binary" von der Spalte zu nehmen wäre, und für die wenigen Abfragen, bei denen es dann noch gebraucht wird, gesetzt wird.
darauf hat mich auch dedlfix in #selfhtml schon angesprochen. Ob es sinnvoll sei, eine Lösung zu einem Problem zu liefern, das höchstwahrscheinlich von einem Konzeptionsfehler her rührt. Warum hier die binäre collate zum Einsatz kommt, weiss ich nicht, möchte aber erstmal keinen Fehler unterstellen.
Dedlfix argumentierte mit dem durch die Konvertiererei nutzlos gewordenen Index. Ich kann mir aber vorstellen, dass es gar keinen so immensen Performanceeinbußen zur Folge hat, wenn bei einem Vergleich eine andere collate genutzt wird. Beim setzen der COLLATE wird schliesslich nicht der Wert konvertiert, sondern lediglich eine andere Vergleichsregel herangezogen. So wirken sich utf8_german_ci und utf8_swedish_ci doch nicht auf die Kodierung (vermutlich UTF8, alles andere würde Salat ergeben) aus, sondern bestimmen lediglich Regeln zur Sortierung (Bspw. Ä vor A, ß nach S, etc.) und Zuordnungen ( Bspw. Ü -> U, Ä -> A ).
Man korrigiere mein bauchgefühltes Halbwissen, so es denn nicht zutreffe
weiterhin schönen abend...
Hello,
Wenn diese Splate aber hauptsächlich für derartige Abfrage vorgehalten wird, dann sollte Horst überlegen, ob nicht besser das "binary" von der Spalte zu nehmen wäre, und für die wenigen Abfragen, bei denen es dann noch gebraucht wird, gesetzt wird.
Jow, das ist eine Überlegung wert. Btw., es ist MySQL.
Danke für Eure Antworten und
Viele Grüße,
Hotte