dedlfix: Backslashes aus 600-MB-Datenbank entfernen

Beitrag lesen

Tach!

Ich bin jetzt aber doch noch über was gestolpert: laut MySQL-Doku wird bei einer Suche mit LIKE nach einem einzigen \ ein Ausdruck wie %\\% erwartet (also 4-fach), weil da doppelt drüber geparsed wird und dann genau einer übrig bleibt.

Die LIKE-Syntax ist quasi eine eigenständige. Und wenn man die in die restliche SQL-Syntax einbindet, kommt dieses doppelte Escapen zustande. Und das auch nur, wenn das Escape-Zeichen nicht geändert wurde. Bei LIKE '~~bla%' ESCAPE '~' braucht man nur eine Verdopplung, um nach einem ~ zu suchen.

Und nach so einigen Experimenten scheint bei REPLACE nur eine Verdoppelung nötig zu sein.

Weil da nur die SQL-Syntax allein auftritt und für diese ein einmaliges Escapen ausreicht. Notierst du aber zum Beispiel das SQL-Statement in PHP in einem String, dann braucht PHP ein Escapen und MySQL noch eins, also auch dann wieder 4 Backslashes.

dedlfix.