SQL ersetzt alle NULL

7

Ich habe eine große Tabelle mit einigen NULL. Was ist der einfachste Weg, um aus der Tabelle mit 0 anstelle von NULLs auszuwählen.

Oder wenn es keinen einfachen Weg dafür gibt, bin ich bereit, alle Nullen durch Nullen in der Tabelle zu ersetzen.

Es gibt viele Spalten, ich möchte nicht jedes mit ISNULL (FieldName, 0) AS FieldName durchgehen.

    
Alec 28.10.2011, 14:45
quelle

9 Antworten

14

Wie viele hier bereits gesagt haben, ist der beste Ansatz ISNULL (). Wenn Sie jedoch einen einfachen Weg zum Generieren all dieser ISNULL () verwenden möchten, verwenden Sie den folgenden Code:

%Vor%

Dies wird den langweiligen Job sehr viel einfacher machen. Sie müssen dann nur die Ausgabe bearbeiten, um die verschiedenen Feldtypen (int, varchar, dates usw.) zu berücksichtigen.

Bearbeiten: Berücksichtigung verschiedener Datentypen mit Standardwerten.

    
Josh Weatherly 28.10.2011, 14:52
quelle
4

Sie haben wirklich zwei Möglichkeiten

%Vor%

oder um das Problem tatsächlich zu beheben und alle NULL-Daten in 0 zu ändern

%Vor%

Wenn du das tust, vergiss nicht die WHERE oder alles wird am Ende 0 sein!

    
Purplegoldfish 28.10.2011 14:49
quelle
3

Sie müssen jede Spalte in der SELECT-Anweisung manuell angeben und die Funktion ISNULL () verwenden:

%Vor%     
sll 28.10.2011 14:46
quelle
1

Trotz Ihres Widerwillens,

%Vor%

für jede Spalte ist der richtige Weg, um damit umzugehen.

    
Joe Stefanelli 28.10.2011 14:47
quelle
0

Alternativ zu ISNULL können Sie COALESCE verwenden, das mit ANSI SQL kompatibel ist.

%Vor%
  

Es gibt viele Spalten, ich möchte nicht jedes mit ISNULL (FieldName, 0) AS FieldName durchgehen.

Sie können nicht immer bekommen, was Sie wollen. Schade. Dies ist der Weg zu gehen: Spalte für Spalte.

    
Adrian Carneiro 28.10.2011 14:49
quelle
0

Es ist nicht einfach, es zu tun, ohne jede Spalte genau so zu durchlaufen, wie Sie es gesagt haben.

NULL hat eine spezielle und eindeutige Bedeutung für 0. Es bedeutet, dass es keinen Wert oder unbekannt im Gegensatz zu einem bekannten Nullwert gibt. Einige Datenbank-Puristen würden argumentieren, dass eine Zeile in einer Tabelle überhaupt keine NULL enthalten sollte!

Wenn die NULL in Ihrer Quelltabelle wirklich Null bedeuten, dann ändern Sie sie, andernfalls behandeln Sie die Nullen, wenn sie durch Ihre Abfragen propagieren.

    
Stephen Turner 28.10.2011 14:53
quelle
0
  

Ich möchte nicht jedes mit ISNULL (FieldName, 0) AS FieldName durchlaufen müssen.

Nimm den Treffer und mache das einmal für jeden:

%Vor%

Sie können dann alles über ISNULL , COALESCE , dreiwertige Logik usw. vergessen.

    
onedaywhen 31.10.2011 13:49
quelle
0

Ich wollte eine dynamische Abfrage, um die Update-Option auszuführen. Leihen von der Post oben und ein anderes ich habe folgendes:

%Vor%     
user2054797 28.05.2015 16:59
quelle
0

Sei ein Boss. Schreib etwas wie:

%Vor%

Es wird eine große alte Frage für Sie ausspucken.

    
Christophxr 08.05.2013 05:05
quelle

Tags und Links