COALESCE- und ISNULL-Funktionen in SQL Server

SQL Server hat mehrere Möglichkeiten zum Umgang mit Nullwerten eingeführt. Die am häufigsten verwendeten Funktionen zur Verarbeitung von NULL-Werten sind COALESCE und ISNULL in SQL Server. Diese Funktionen werden verwendet, um Nicht-NULL-Werte aus einer Liste von Argumenten zu finden. In diesem Beitrag werden wir die Verwendung der Funktionen ISNULL und COALESCE und ihre Unterschiede anhand von Beispielen sehen.

COALESCE-Funktion in SQL Server

1. Die COALESCE-Funktion in SQL Server wird verwendet, um den ersten Nicht-NULL-Wert aus der Liste der Spalten / Argumente in der angegebenen Reihenfolge zurückzugeben.

2. COALESCE wird als vergleichbar mit dem Schreiben eines CASE-Anweisungsausdrucks in SQL betrachtet.

3. COALESCE ist eine ANSI SQL-Standardfunktion. Es ist mit allen gängigen RDBMS einschließlich Oracle, MySQL, verfügbar.

4. Syntax - COALESCE (Ausdruck [,… n])

ISNULL-Funktion in SQL Server

1. ISNULL ist eine Funktion, die speziell in T-SQL eingeführt wurde, um einen NULL-Wert durch einen angegebenen Ersetzungswert zu ersetzen.

2. Syntax - ISNULL (check_expression, replacement_value)

Der Unterschied zwischen ISNULL und COALESCE

1. ISNULL ist eine Funktion. Daher wird es nur einmal ausgewertet. COALESCE ist ein Ausdruck, der einer Case-Anweisung ähnelt. Es würde mehrmals ausgewertet werden.

2. Die ISNULL-Funktion ist spezifisch für Microsoft und wurde in SQL Server eingeführt. COALESCE ist eine ANSI-Standardfunktion, die von allen gängigen RDBMSs (z. B. Oracle, MySQL) verwendet wird.

3. Der Rückgabedatentyp für eine ISNULL-Funktion verwendet den Datentyp des ersten Arguments oder des zweiten Arguments, wenn das erste Argument NULL ist. Wenn beide Argumente NULL sind, wird ein INTEGER-Datentyp zurückgegeben. COALESCE verwendet die Regeln für case-Anweisungen und verwendet den höchsten Prioritätsprinzipal, um den Datentyp zurückzugeben. COALESCE gibt einen Fehler zurück, wenn alle Eingabeparameter NULL sind.

4. ISNULL benötigt nur zwei Parameter. COALESCE benötigt eine variable Anzahl von Parametern.

Beispiele für COALESCE- und ISNULL-Funktionen

Wir erstellen eine Mitarbeiter-Tabelle mit Mitarbeiter-ID, Vorname, Vorname, Nachname, Telefonnummer und Gehaltsspalten.

Mit Ausnahme der Employee (Id) -Spalte wird jede zweite Spalte als NULL-fähig betrachtet.

WENN OBJECT_ID ('Employee') NICHT NULL DROP TABLE-Mitarbeiter ist; CREATE TABLE Mitarbeiter (Id INT NICHT NULL IDENTITY (1,1) PRIMARY KEY, Vorname VARCHAR (50) NULL, MiddleName VARCHAR (50) NULL, Nachname VARCHAR (50) NULL, ContactNo VARCHAR (10) NULL, Gehalt INT NULL);

Fügen Sie einige Datensätze in die Mitarbeitertabelle ein

Einfügen in Employee-Werte ('Vishwanath', NULL, NULL, '9999955555', 12000); Einfügen in Employee-Werte (NULL, 'Niraj', NULL, '9911223344', 14000); In Employee Werte einfügen (NULL, NULL, 'Chetan', NULL, NULL); Einfügen in Employee-Werte ('Atul', 'K', NULL, '9876780987', NULL); In Employee Werte einfügen ('Vishal', 'M', 'P', NULL, 12000); 

1. Verwendung von ISNULL - Anzeige 'Nicht angegeben', wenn in der Employee-Tabelle ContactNo NULL ist

In den folgenden Beispielen werden die Spalten ID und ContactNo aus der Employee-Tabelle abgerufen. Wenn die Spalte "ContactNo" NULL ist, wird "ContactNo" in der Ergebnismenge als "Nicht angegeben" angezeigt. Verwenden Sie die ISNULL-Funktion, um in der ContactNo-Spalte auf NULL-Werte zu prüfen.

SELECT ID, ISNULL (KontaktNr, 'nicht angegeben') vom Mitarbeiter; 
Ausgabe - Ergebnissatz-ID Kontaktnr. 1 9999955555 2 9911223344 3 Nicht gegeben 4 9876780987 5 Nicht gegeben 

2. Verwendung von ISNULL - Einstellung des Gehalts auf 0, wenn kein Gehalt bereitgestellt wird

In den folgenden Beispielen wird die Spalte ID und Jahresgehalt (Monatsgehalt * 12) abgerufen. Wenn Salary NULL ist, ersetzen Sie es durch 0. Verwenden Sie die Funktion ISNULL, um in der Salary-Spalte auf NULL-Werte zu prüfen.

SELECT Id, ISNULL (Gehalt, 0) * 12 als KontaktNr von Mitarbeiter; 
Ausgabe - Ergebnissatz Id Kontaktnummer 1 144000 2 168000 3 0 4 0 5 144000 

3. Verwenden von IS NULL - Finden von Mitarbeiter-IDs, bei denen die Kontaktnummer NULL ist

Im folgenden Beispiel wird IS NULL (Leerzeichen zwischen IS und NULL) verwendet, um Datensätze in der Kontaktnummernspalte herauszufiltern. Wenn die Kontaktnummer nicht angegeben ist, haben sie NULL-Werte.

SELECT ID, ContactNo als ContactNo von einem Mitarbeiter, wo ContactNo NULL ist; 
Ausgabe - Ergebnissatz-ID Kontaktnr. 3 NULL 5 NULL 

4. Verwenden von IS NOT NULL - Finden von Mitarbeiter-IDs, bei denen das Gehalt NICHT NULL ist

Das folgende Beispiel verwendet IS NOT NULL, um Datensätze in der Spalte "Gehalt" herauszufiltern, bei denen "Gehalt" NICHT NULL ist oder das Gehalt vorhanden ist.

SELECT ID, Gehalt als KontaktNr von AN Mitarbeiter, dessen Gehalt NICHT NULL ist; 
Ausgabe - Ergebnissatz Id Kontaktnummer 1 12000 2 14000 5 12000 

5. Verwendung der ISNULL-Funktion mit AVG - Berechnung des Durchschnittsgehalts aller Mitarbeiter

Das folgende Beispiel ermittelt das durchschnittliche Gehalt aller Mitarbeiter, einschließlich derjenigen, denen keine Gehaltszahl zugewiesen wurde (d. H. NULL-Werte).

SELECT AVG (ISNULL (Gehalt, 0)) vom Mitarbeiter; 
Ausgabe - Ergebnissatz AvgEmpSal 7600 

6. Using COALESCE - Ermittelt den ersten NOT NULL-Wert

Im folgenden Beispiel wird COALESCE verwendet, um den ersten Nicht-NULL-Wert zwischen den Spalten Vorname, Nachname und Nachname zurückzugeben.

SELECT ID, COALESCE (Vorname, Vorname, Nachname) als FirstNotNullName FROM Employee; 
Ausgabe - Ergebnissatz-ID FirstNotNullName 1 Vishwanath 2 Niraj 3 Chetan 4 Atul 5 Vishal 

7. Using COALESCE - Den ersten NOT NULL-Wert von Variablenargumenten abrufen

Das folgende Beispiel gibt den ersten NOT NULL-Wert zurück (d. H. 'Hi There').

SELECT COALESCE (NULL, NULL, 'Hallo dort', NULL, 'Hallo')) als FirstNotNullValue; 
Ausgabe - Ergebnis Set FirstNotNullValue Hi dort 

8. Verwenden von COALESCE - Übergeben aller NULL-Werte als Argument

Wenn wir alle Argumente als NULL an eine COALESCE-Funktion übergeben, wird ein Fehler ausgegeben, der besagt, dass mindestens ein Argument nicht die Null-Konstante sein sollte.

SELECT COALESCE (NULL, NULL, NULL, NULL) als FirstNotNullValue 

Fehlermeldung
Meldung 4127, Ebene 16, Status 1, Zeile 22
Mindestens eines der Argumente für COALESCE muss ein Ausdruck sein, der nicht die NULL-Konstante ist.

Lesen Sie mehr über Datenbank- und SQL-Programmierung von Tech-Recipes.