itrain-home Kinderpatenschaften mit Plan Deutschland  
home
 Aktuelle Seite:  knowhow sql tsql misc nullweg.asp 
 



 

Löschen von Zeilen, bei denen mehrere Spalten NULL-Werte aufweisen

Recht häufig sind die Daten in Tabellen nur unvollständig gefüllt und es ist oftmals recht aufwendig fehlerhafte Daten aufzuspüren. Ein Ansatzpunkt kann sein, Zeilen zu ermitteln, in denen die meisten Zeilen nur NULL-Werte aufweisen.

Wie kann man nun ermitteln, welche Zeilen einer Tabelle z.B. in mehr als 4 Spalten NULL-Werte enthalten?

Eine Abfrage nach dem Muster SELECT * FROM tabelle WHERE spalte1 IS NULL AND spalte2 IS NULL AND... wird schnell zu kompliziert. Einfacher lässt sich dieses Problem mit einer CASE-Anweisung lösen. Für jede Spalte die einen NULL-Wert enthält wird der Zähler um eins erhöht. Für eine einfache Tabelle mit vier Spalten könnte der SELECT in etwa so aussehen:

SELECT * FROM tabelle   
 WHERE   
    CASE WHEN spalte1 IS NULL THEN 1 ELSE 0 END  +   
    CASE WHEN spalte2 IS NULL THEN 1 ELSE 0 END +   
    CASE WHEN spalte3 IS NULL THEN 1 ELSE 0 END +   
    CASE WHEN spalte4 IS NULL THEN 1 ELSE 0 END   
    >= 2

Diese Abfrage ermittelt alle Zeilen der Tabelle, in denen 2 oder mehr Spalten NULL-Werte enthalten.

Mit Hilfe von dynamischem SQL kann mit diesem Ansatz einfach eine gespeicherte Prozedur geschrieben werden, die die entsprechenden Zeilen selektiert oder direkt löscht.

Schauen Sie sich das fertige Beispiel doch einfach mal an.

Leerraum

Dokument zum Drucken anzeigen
English Pages
Link-Tipp zum Thema "ASP.net": www.only4gurus.com/

Sehr umfangreiche Site zu allen Themen der Microsoft Entwicklung mit vielen Downloads und "Hands on Labs"