Ich erstelle eine berechnete Spalte über Felder, von denen einige möglicherweise null sind.
Das Problem ist, dass wenn eines dieser Felder null ist, die gesamte berechnete Spalte null ist. Ich verstehe aus der Microsoft-Dokumentation, dass dies erwartet wird und über die Einstellung SET CONCAT_NULL_YIELDS_NULL deaktiviert werden kann. Dort möchte ich dieses Standardverhalten jedoch nicht ändern, da ich die Auswirkungen auf andere Teile von SQL Server nicht kenne.
Gibt es eine Möglichkeit für mich, nur zu überprüfen, ob eine Spalte null ist, und ihren Inhalt nur dann an die berechnete Spaltenformel anzuhängen, wenn sie nicht null ist?
Antworten:
Sie können verwenden
ISNULL(....)
Wenn der Wert der Spalte / des Ausdrucks tatsächlich NULL ist, wird stattdessen der zweite angegebene Wert (hier: leere Zeichenfolge) verwendet.
quelle
ISNULL()
ist eine gute Lösung, aber ab SQL Server 2012 können Sie auch dieCONCAT
Funktion verwenden, um das gleiche Ergebnis zuCONCAT(@Column1, @Column2)
null
für etwas anderes als eine leere Zeichenfolge, das heißtIsNull(@Column1, 'NULLVALUE')
, mitIsNull
der Ersatz String - Länge auf die Länge der Säule begrenzt wird es ersetzt, während es nicht mit istCoalesce
Ab SQL Server 2012 ist dies alles mit der
CONCAT
Funktion viel einfacher .Es wird
NULL
als leere Zeichenfolge behandeltquelle
Verwende COALESCE . Anstelle von
your_column
GebrauchCOALESCE(your_column, '')
. Dies gibt die leere Zeichenfolge anstelle von NULL zurück.quelle
Verwenden
Die Verkettung von Nullwerten mit einer Zeichenfolge führt nicht zu Null.
Bitte beachten Sie, dass dies eine veraltete Option ist. Vermeiden Sie die Verwendung. Weitere Informationen finden Sie in der Dokumentation .
quelle
Sie können auch CASE verwenden - mein Code unten prüft sowohl auf Nullwerte als auch auf leere Zeichenfolgen und fügt nur dann einen Trennzeichen hinzu, wenn ein folgender Wert vorhanden ist:
quelle
Ich wollte nur dazu beitragen, wenn jemand Hilfe beim Hinzufügen von Trennzeichen zwischen den Zeichenfolgen sucht, je nachdem, ob ein Feld NULL ist oder nicht.
Im Beispiel zum Erstellen einer einzeiligen Adresse aus separaten Feldern
In meinem Fall habe ich die folgende berechnete Spalte, die anscheinend so funktioniert, wie ich es möchte:
Hoffe das hilft jemandem!
quelle
ISNULL(ColumnName, '')
quelle
Ich hatte auch große Probleme damit. Mit den obigen Fallbeispielen konnte es nicht funktionieren, aber das macht den Job für mich:
Ersetzen korrigiert die doppelten Leerzeichen, die durch die Verkettung einzelner Leerzeichen mit nichts dazwischen verursacht werden. r / ltrim entfernt alle Leerzeichen an den Enden.
quelle
In SQL Server:
Code dahinter:
quelle
Dieses Beispiel hilft Ihnen beim Umgang mit verschiedenen Typen beim Erstellen von Einfügeanweisungen
quelle