Kann jemand erklären, wie die COALESCE-Funktion in TSQL funktioniert? Die Syntax lautet wie folgt
COALESCE (x, y)
Das MSDN-Dokument zu dieser Funktion ist ziemlich vage
sql
sql-server
sql-server-2008
tsql
Lloyd Banks
quelle
quelle
ISNULL
, es ist nicht Standard, weniger flexibel. Ich habe gelesen, dass es immer den Datentyp des ersten Arguments zurückgibt und nicht den Datentyp des zurückgegebenen Werts wie dies derCOALESCE
Fall ist.Ich bin mir nicht sicher, warum Sie die Dokumentation für vage halten.
Es geht einfach alle Parameter einzeln durch und gibt den ersten zurück
NOT NULL
.Es akzeptiert so ziemlich jede Anzahl von Parametern, aber sie sollten vom gleichen Datentyp sein. (Wenn sie nicht denselben Datentyp haben, werden sie implizit in einen geeigneten Datentyp umgewandelt, wobei die Rangfolge der Datentypen Vorrang hat .)
Es ist wie
ISNULL()
für mehrere Parameter und nicht nur für zwei.Es ist auch
ANSI-SQL
, wo-wieISNULL()
nicht.quelle
ISNULL
gibt einen Wert mit dem gleichen Datentyp wie der erste Parameter zurückexpressions
, Vergleiche mit CASE, Vergleiche mit ISNULL und schließlich ein Beispiel ohne Ergebnis. Dann ein zu komplexes Beispiel mit zu vielen Details. Wenn wir nur diese Antwort mit 5 - 6 Zeilen WTF brauchen, ist und tut dies.So sehe ich COALESCE ... und hoffentlich macht es Sinn ...
In einer vereinfachten Form….
Coalesce (Feldname, 'leer')
Das bedeutet also ... Wenn "FieldName" NULL ist, füllen Sie den Feldwert mit dem Wort "EMPTY".
Nun zu mehreren Werten ...
Zusammenführen (Feldname1, Feldname2, Wert2, Wert3)
Wenn der Wert in Feldname1 null ist, füllen Sie ihn mit dem Wert in Feldname2, wenn Feldname2 NULL ist, füllen Sie ihn mit Wert2 usw.
Dieser Testcode für die AdventureWorks2012- Beispieldatenbank funktioniert einwandfrei und bietet eine gute visuelle Erklärung der Funktionsweise von COALESCE :
quelle
Es gibt viel mehr zu verschmelzen als nur einen Ersatz für ISNULL. Ich stimme voll und ganz zu, dass die offizielle "Dokumentation" der Verschmelzung vage und nicht hilfreich ist. Dieser Artikel hilft sehr. http://www.mssqltips.com/sqlservertip/1521/the-many-uses-of-coalesce-in-sql-server/
quelle
Hier ist eine einfache Abfrage mit Coalesce -
Es werden die Personen zurückgegeben, bei denen sowohl addressId als auch contactId null sind.
Koaleszenzfunktion
z.B
quelle
Die einfachste Definition der Coalesce () -Funktion könnte sein:
Hinweis: Es werden ALLE Parameter ausgewertet, dh die Auswertung der Argumente auf der rechten Seite des zurückgegebenen / NOT NULL-Parameters wird nicht übersprungen.
Syntax:
Achtung : Abgesehen von den Argumenten, die als NULL ausgewertet werden, müssen alle anderen (NOT-NULL) Argumente entweder vom gleichen Datentyp oder vom passenden Typ sein (der "implizit automatisch in einen kompatiblen Datentyp konvertiert werden kann") (siehe Beispiele) unten:
HTH
quelle
quelle