Mysql
 sql >> Datenbank >  >> RDS >> Mysql

MySQL REGEXP-Wortgrenzen [[:<:]] [[:>:]] und doppelte Anführungszeichen

Lassen Sie mich die Dokumentation zitieren zuerst:

Aus der Dokumentation können wir den Grund für Ihr Problem erkennen und es wird nicht durch Flucht verursacht. Das Problem ist, dass Sie versuchen, die Wortgrenze [[:<:]] abzugleichen direkt am Anfang der Zeichenfolge, was nicht funktioniert, da eine Wortgrenze, wie Sie der Dokumentation entnehmen können, ein Wortzeichen von einem Nichtwortzeichen trennt, aber in Ihrem Fall ist das erste Zeichen ein " das kein Wortzeichen ist, also gibt es keine Wortgrenze, das gleiche gilt für das letzte " und [[:>:]] .

Damit dies funktioniert, müssen Sie Ihren Ausdruck ein wenig in diesen ändern:

"[[:<:]]word[[:>:]]"
 ^^^^^^^    ^^^^^^^

Beachten Sie, wie die Wortgrenze ein Nichtwortzeichen " trennt aus einem Wortzeichen w am Anfang und ein " von d am Ende der Zeichenfolge.

BEARBEITEN: Wenn Sie immer eine Wortgrenze am Anfang und am Ende der Zeichenfolge verwenden möchten, ohne zu wissen, ob es eine tatsächliche Grenze gibt, können Sie den folgenden Ausdruck verwenden:

([[:<:]]|^)"word"([[:>:]]|$)

Dies entspricht entweder einer Wortgrenze am Anfang oder dem Anfang der Zeichenfolge ^ und dasselbe für das Ende der Wortgrenze oder das Ende der Zeichenkette. Ich rate Ihnen wirklich, die Daten, die Sie abgleichen möchten, zu studieren und nach gemeinsamen Mustern zu suchen und keine regulären Ausdrücke zu verwenden, wenn sie nicht das richtige Werkzeug für den Job sind.

SQL-Fiddle-Demo