Sven Rautenberg: & MySQL & RegEx: Assertions in Datenbankabfrage?

Beitrag lesen

Moin!

...manchmal hilft's scheinbar schon, wenn man einfach mal aufschreibt, welches Problem man hat ;) Ich hab' das ganze jetzt folgendermaßen gelöst:

"SELECT * FROM tabelle WHERE spalte REGEXP '1x2[^0-9]' OR '[^0-9]1x2'"

Kann mir kaum vorstellen, dass das schon die finale korrekte Lösung ist.

Wenn du nach "1x2" suchst, und ausschließen willst, dass vor der 1 noch Ziffern kommen, und auch nach der 2, dann ist das EIN regulärer Ausdruck für mich.

Und auch deine WHERE-Bedingung schaut extrem merkwürdig aus. Es gibt nämlich keine REGEXP-Verknüpfung mit OR. Das, was du da produziert hast, ist folgendes (geklammert zur Verdeutlichung):
(spalte REGEXP '1x2[^0-9]') OR ('[^0-9]1x2')

Also der Regex-Vergleich oder ein konstanter String. Wundert mich, dass das ohne Fehlermeldung durchgeht.

- Sven Rautenberg

--
"Love your nation - respect the others."