ISNULL (Transact-SQL)

Gilt für: SQL Server (alle unterstützten Versionen) Azure SQL-Datenbank Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW)

Ersetzt NULL durch den angegebenen Ersatzwert.

ThemenlinksymbolTransact-SQL-Syntaxkonventionen

Syntax

ISNULL ( check_expression , replacement_value )  

Hinweis

Informationen zum Anzeigen der Transact-SQL-Syntax für SQL Server 2014 oder früher finden Sie unter Dokumentation zu früheren Versionen.

Argumente

check_expression
Dies ist der Ausdruck, der auf NULL überprüft werden soll. check_expression kann ein beliebiger Typ sein.

replacement_value
Der Ausdruck, der zurückgegeben werden soll, wenn Prüfausdruck NULL ist. replacement_value muss einen Typ aufweisen, der implizit in den Typ von check_expression konvertiert werden kann.

Rückgabetypen

Gibt denselben Typ wie der Ausdruck check_expression zurück. Wenn ein literaler NULL-Wert als check_expression bereitgestellt wird, wird der Datentyp des Ersatzwerts replacement_value zurückgegeben. Wenn ein literaler NULL-Wert als check_expression bereitgestellt wird und kein replacement_value bereitgestellt wird, wird int zurückgegeben.

Bemerkungen

Der Wert von check_expression wird zurückgegeben, wenn er nicht NULL ist, andernfalls wird replacement_value zurückgegeben, nachdem er implizit in den Typ von check_expression konvertiert wurde, falls die Typen unterschiedlich sind. replacement_value kann gekürzt werden, wenn replacement_value länger als check_expression ist.

Hinweis

Verwenden Sie COALESCE (Transact-SQL), um den ersten Wert zurückzugeben, der nicht NULL ist.

Beispiele

A. Verwenden von ISNULL mit AVG

Im folgenden Beispiel wird das Durchschnittsgewicht aller Produkte gesucht. Alle NULL-Einträge in der 50-Spalte der Weight-Tabelle werden durch den Wert Product ersetzt.

USE AdventureWorks2012;  
GO  
SELECT AVG(ISNULL(Weight, 50))  
FROM Production.Product;  
GO  

Hier ist das Resultset.

-------------------------- 
59.79  
 
(1 row(s) affected)

B. Verwenden von ISNULL

Im folgenden Beispiel werden die Beschreibung, der Prozentsatz des Rabatts, die Mindestmenge und die Höchstmenge für alle Sonderangebote in AdventureWorks2012 ausgewählt. Wenn die Höchstmenge für ein bestimmtes Sonderangebot NULL ist, wird für MaxQty im Resultset 0.00 angezeigt.

USE AdventureWorks2012;  
GO  
SELECT Description, DiscountPct, MinQty, ISNULL(MaxQty, 0.00) AS 'Max Quantity'  
FROM Sales.SpecialOffer;  
GO  

Hier ist das Resultset.

BESCHREIBUNG DiscountPct MinQty Höchstmenge
No Discount 0.00 0 0
Volume Discount 0,02 11 14
Volume Discount 0.05 15 4
Volume Discount 0,10 25 0
Volume Discount 0,15 41 0
Volume Discount 0,20 61 0
Mountain-100 Cl 0,35 0 0
Sport Helmet Di 0,10 0 0
Road-650 Overst 0,30 0 0
Mountain Tire S 0,50 0 0
Sport Helmet Di 0,15 0 0
LL Road Frame S 0,35 0 0
Touring-3000 Pr 0,15 0 0
Touring-1000 Pr 0,20 0 0
Half-Price Peda 0,50 0 0
Mountain-500 Si 0,40 0 0

(16 row(s) affected)

C. Testen auf NULL in einer WHERE-Klausel

ISNULL sollte nicht für die Suche nach NULL-Werten verwendet werden. Verwenden Sie stattdessen IS NULL. Im folgenden Beispiel werden alle Produkte gesucht, die in der Weight-Spalte NULL enthalten. Beachten Sie den Leerraum zwischen IS und NULL.

USE AdventureWorks2012;  
GO  
SELECT Name, Weight  
FROM Production.Product  
WHERE Weight IS NULL;  
GO  

Beispiele: Azure Synapse Analytics und Analytics-Plattformsystem (PDW)

D: Verwenden von ISNULL mit AVG

Im folgenden Beispiel wird das Durchschnittsgewicht aller Produkte in der selben Tabelle gesucht. Alle NULL-Einträge in der 50-Spalte der Weight-Tabelle werden durch den Wert Product ersetzt.

-- Uses AdventureWorks  
  
SELECT AVG(ISNULL(Weight, 50))  
FROM dbo.DimProduct;  

Hier ist das Resultset.

--------------------------   
52.88   

E. Verwenden von ISNULL

Im folgenden Beispiel wird ISNULL verwendet, um auf NULL-Werte in der Spalte MinPaymentAmount zu prüfen, und um den Wert 0.00 für diese Zeilen anzuzeigen.

-- Uses AdventureWorks  
  
SELECT ResellerName,   
       ISNULL(MinPaymentAmount,0) AS MinimumPayment  
FROM dbo.DimReseller  
ORDER BY ResellerName;  
  

Dies ist ein Auszug aus dem Resultset.

ResellerName MinimumPayment
A Bicycle Association 0,0000
A Bike Store 0,0000
A Cycle Shop 0,0000
A Great Bicycle Company 0,0000
A Typical Bike Shop 200,0000
Acceptable Sales & Service 0,0000

F. Verwenden von IS NULL für die Überprüfung auf NULL in einer WHERE-Klausel

Im folgenden Beispiel werden alle Produkte gesucht, die in der NULL-Spalte Weight enthalten. Beachten Sie den Leerraum zwischen IS und NULL.

-- Uses AdventureWorks  
  
SELECT EnglishProductName, Weight  
FROM dbo.DimProduct  
WHERE Weight IS NULL;  

Weitere Informationen

Ausdrücke (Transact-SQL)
IS NULL (Transact-SQL)
Systemfunktionen (Transact-SQL)
WHERE (Transact-SQL)
COALESCE (Transact-SQL)