MySQL: Einträge mit regulären Ausdrücken löschen

Online seit Sun 04 January 2015 in Digital

Arbeitet man mit Datenbanken, speziell im Entwicklungsstadium einer Anwendung, kann allerlei Müll anfallen, den man tunlichst loswerden möchte. Geht es um einzelne Einträge, kann man das gut mit Befehlen wie:

DELETE * FROM tabellenname WHERE id=xy

wenn man nur wenige oder gar einen einzelnen Eintrag loswerden möchte. Und

DELETE * FROM tabellenname WHERE spaltenname=""

würde alle leeren Testeinträge verwerfen.

Hat man jedoch viele Reihen, die unerwünscht sind, kann es schnell eine abendfüllende Aufgabe werden alles Unbenötigte loszuwerden. Und leider sind nicht immer alle Testeinträge an der richtigen Stelle leer. Schon ein Zeilenumbruch (“\n“) in einem Textfeld reicht das zweite Statement zu vereiteln.

Besser geeignet sind für solche Vorhaben sind Reguläre Ausdrücke, so muss man nicht von Hand zusammensuchen oder löschen. Dazu muss man einfach in die WHERE-Klausel in folgender Weise modifizieren:

DELETE FROM tabellenname WHERE spaltenname Regexp '^[ ]*[\n]+[ ]*$';

In diesem Fall werden alle Zeilen gelöscht, die nur aus leeren Zeichen und ein oder mehreren Zeilenumbrüchen bestehen. Das funktioniert natürlich analog auch mit SELECT. *