Ich habe gerade die Dokumentation für die SQL Server 2012-Prüfungen gelesen und den folgenden Punkt gesehen:
case versus isnull versus coalesce
Jetzt weiß ich , WIE jeden verwenden , aber ich weiß nicht , WENN jedes zu verwenden. Bitte könnte ein Körper klarstellen. Vielen Dank.
Ps. Könnten wir bitte einen Tag für Prüfungsfragen haben?
sql-server
sql-server-2012
Stuart Blackler
quelle
quelle
COALESCE
wird erweitert,CASE
aber offensichtlich können Sie in einerCASE
Erklärung, die Sie selbst schreiben, flexibler in denWHEN
Bedingungen sein. FürISNULL
vsCOALESCE
verwandt / duplizieren?Antworten:
ISNULL - nur in SQL Server verfügbar. Ermöglicht das Testen und Ersetzen eines NULL-Werts untereinander.
COALESCE - ANSI-Standard. Ermöglicht das Testen und Ersetzen eines NULL-Werts durch den ersten Nicht-Null-Wert in einer Reihe von Argumenten variabler Länge. Es ist wichtig zu beachten, dass der Datentyp Vorrang hat
Im obigen Beispiel ist 'a' der erste Wert ungleich Null, aber Zeichendaten haben eine niedrigere Priorität als Ganzzahlen.
Eine weitere Überlegung zwischen ISNULL und COALESCE ist, dass das Ergebnis von ISNULL als NICHT NULL bestimmt wird, während das Ergebnis eines COALESCE-Aufrufs NULL ist. Siehe JRJs Beitrag ISNULL () <> COALESCE () Während dies trivial erscheinen mag, kann das Abfrageoptimierungsprogramm basierend auf der Nullfähigkeit einer Spalte verschiedene Pläne erstellen.
Sie können die Nullfähigkeit Ihrer isnull / coalesce / case-Ausdrücke einfach testen, indem Sie sie über das dmo sys.dm_exec_describe_first_result_set ausführen
CASE - Auch eine ANSI-Standard-Skalarfunktion. Ich würde mir überlegen, CASE gegenüber den beiden vorherigen zu verwenden, wenn ich einen Test habe, der nicht in einem einfachen Skalar ausgedrückt werden kann, aber das ist eine ziemlich schwache Antwort, gebe ich zu.
quelle
COALESCE
.CASE
ist technisch gesehen ein Ausdruck, keine Funktion.ISNULL gibt Ihnen die Möglichkeit, 1 Wiederholung zurückzugeben. COALESCE ist nicht auf einen Wert beschränkt.
COALESCE(v1,v2,v3,v4,v5)
Wenn beispielsweise V5 der einzige Wert ist, der NICHT NULL ist, wird er zurückgegebenquelle