Datenbereinigung in SQL – Methoden, Beispiele und Tipps

Wenn du mit Daten arbeitest, kennst du wahrscheinlich das Problem: Rohdaten enthalten oft Fehler, Inkonsistenzen oder unnötige Werte. Bevor du damit Analysen oder Modelle baust, ist eine saubere Datenbasis essenziell – und genau hier kommt die Datenbereinigung in SQL ins Spiel.

Warum Datenbereinigung so wichtig ist

  • Schlechte Daten führen zu falschen Ergebnissen oder verzerrten Analysen
  • Viele Tools erfordern konsistente Formate (Datum, Text, Zahlen)
  • Automatisierte Prozesse wie ETL oder Reporting vertragen keine Ausreißer oder fehlerhaften Werte

Typische Schritte und Techniken zur Datenbereinigung

1. Duplikate entfernen

Oft sind Einträge mehrfach vorhanden. Mit DISTINCT oder einer ROW_NUMBER()-Logik kannst du Duplikate identifizieren und eliminieren.
Beispiel:

WITH nummeriert AS (
  SELECT *,
         ROW_NUMBER() OVER (PARTITION BY SpalteA, SpalteB ORDER BY id) AS rn
  FROM meine_tabelle
)
DELETE FROM nummeriert WHERE rn > 1;

2. Nullwerte behandeln

Nullwerte sollten nicht einfach ignoriert werden. Du kannst sie ersetzen (z. B. mit Standardwerten) oder herausfiltern:

UPDATE meine_tabelle
SET Spalte = 'Unbekannt'
WHERE Spalte IS NULL;

Oder in Abfragen:

SELECT COALESCE(Spalte, 'Unbekannt') AS SauberSpalte
FROM meine_tabelle;

3. Trimmen & Whitespace entfernen

Manchmal enthalten Textfelder führende oder nachfolgende Leerzeichen:

UPDATE meine_tabelle
SET Spalte = TRIM(Spalte);

Das reduziert Fehler bei Vergleichen und JOINs.

4. Format-Umwandlungen (Strings, Zahlen, Datum)

Wenn Daten als Strings gespeichert sind, musst du sie in korrekte Typen umwandeln:

-- Wenn ein Datum als String vorliegt:
UPDATE meine_tabelle
SET datum = TO_DATE(datum_str, 'YYYYMMDD');

-- Wenn eine Zahl als Text:
UPDATE meine_tabelle
SET zahl = CAST(zahl_str AS INTEGER);

5. Ungültige oder fehlerhafte Werte filtern

Einige Werte sind offensichtlich „falsch“ (z. B. negatives Alter, Datumswerte in der Zukunft). Verwende Bedingungen, um solche Fälle zu identifizieren:

SELECT *
FROM meine_tabelle
WHERE alter < 0 OR geburtsdatum > CURRENT_DATE;

Best Practices & Tipps für effektive Datenbereinigung

  • Führe Bereinigungsschritte in logischer Reihenfolge durch (Duplikate → Nullwerte → Formatierung).
  • Teste stets erst in einer Kopie der Tabelle oder in einer temporären Tabelle.
  • Halte Bereinigungslogik reproduzierbar (z. B. in Stored Procedures oder Skripten).
  • Verwende Transaktionen, damit du bei Fehlern zurückrollen kannst.
  • Dokumentiere, was geändert wurde – welche Regeln angewandt wurden und warum.

Interne Verlinkungen zu verwandten Themen auf datenanalyst.com