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.
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.
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!
Trotz Ihres Widerwillens,
%Vor%für jede Spalte ist der richtige Weg, um damit umzugehen.
Alternativ zu ISNULL
können Sie COALESCE
verwenden, das mit ANSI SQL kompatibel ist.
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.
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.
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.
Ich wollte eine dynamische Abfrage, um die Update-Option auszuführen. Leihen von der Post oben und ein anderes ich habe folgendes:
%Vor%Sei ein Boss. Schreib etwas wie:
%Vor%Es wird eine große alte Frage für Sie ausspucken.
Tags und Links sql sql-server sql-server-2005