ich benötige mal Hilfe von einem Regex-Experten. Ich versuche, in MySQL eine Textspalte nach dem Wort Grüßen zu durchsuchen. Nachdem ich vorher aber nicht weiß, ob die Umlaute ersetzt wurden, dachte ich daran, einen regulären Ausdruck daraus zu basteln. Ich hänge aber im Moment an den Umlauten. Mein Ausdruck bislang lautet dazu
RLIKE 'gr[ü|ue]+[ß|ss]+en'
Nur habe ich damit das Problem, dass auch "grußen" oder gar "grusen" gefunden wird. Gibt es eine Möglichkeit, über RLIKE die Abfrage so zu gestalten, dass entweder Umlaut oder die Ersetzung vorkommt?
Edit: mittels
RLIKE '[g]+[r]+[ü|ue]+[ß|ss]+[e]+[n]+'
scheint das richtige Ergebnis zu kommen, aber kann man das nicht irgendwie einfacher ausdrücken?
Ohne es genauer geprüft zu haben: Ersetze in deinem ersten Vorschlag die eckigen durch runde Klammern. Denn in eckigen Klammern gibst du nur eine Auswahl möglicher Zeichen an. Also:
Ich habe das trotzdem nochmal angepackt. Ich muss mich vorhin irgendwie vertippt haben, denn die Version mit den runten Klammmern läuft. Von daher: grüner Haken :-)
Hallo zusammen, RLIKE ist so das langsamste was du tun kannst. Es wäre besser wenn du ohne RegEx arbeitest. Also zum Beispiel so was: Feld LIKE '%gruessen%' or Feld LIKE '%grüßen%'
Eine mögliche Fehlerquelle hierbei kann dann noch die Zeichencodierung sein. Beispiel wenn deine Abfrage in ISO-8859 geschrieben die Zeichencodierung im Feld aber UTF-8 ist kannst du keinen Match erzeugen. Du würdest dann mit der Falschen Codierung suchen. Entscheidend ist hier aber was im Feld drin ist, nicht was dran steht.
Dass Rlike lahm ist, ist mir bewusst. Ich generiere meinen SQL-String ja dynamisch zur Laufzeit, und dein Beispiel mit dem Like mache ich ja im Moment so. Nur damit erwische ich halt nicht, wenn im Feld 'grüssen' drin steht. Da ist mein Problem.