Sven Rautenberg: "konstante Strings" - warum kein Regex?

Beitrag lesen

Moin!

Die Suche nach konstanten Strings erfordert kein Regex.
Und du kriegst das notwendige Regex-Escaping hin?

jetzt glaube ich verstanden zu haben, was mit den "konstanten" Strings gemeint war. Danke für die Klarstellung. Somit sind die Benutzereingaben im SQL-Code "konstante Strings", z.B. im Gegensatz zum Wert eines Datensatzfeldes. Habe kapiert.

Klingt noch nicht so überzeugend.

Was ich aber nicht kapiert habe ist, warum ich kein RegExp brauchen sollte. Wenn "konstante Strings" kein RegExp erfordern, wozu existiert diese Funktion dann, insbesondere unter dem Aspekt des Escaping bei "nicht-konstanten" Strings?

Wenn du feststellen willst, ob in einem Textfeld der Datenbank ein bestimmter String (z.B. die Zeichenfolge "grün") irgendwo enthalten ist, nimm LIKE:

WHERE feld LIKE "%grün%"

Das funktioniert performanter, als dasselbe mit REGEXP zu machen.

Wenn das, was gesucht werden soll, dynamisch vom Nutzer eingegeben werden kann, muss kontextabhängig escaped werden.

Und REGEXP sind dann sinnvoll, wenn das zu Suchende mit Regeln formuliert werden muss: Suche alles, wo erst drei Buchstaben "A-Z", dann zwei Ziffern "0-9" und dann nochmal dieselben Buchstaben von vorne drin sind. Sowas kann man nicht als schlichten Suchstring eingeben, denn "AAA11AAA" oder "ZYX81ZYX" wären Treffer.

- Sven Rautenberg