ISNULL (Transact-SQL)
Gilt für: SQL Server Azure SQL-Datenbank Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW) SQL Analytics-Endpunkt in Microsoft Fabric Warehouse in Microsoft Fabric
Ersetzt den NULL
angegebenen Ersetzungswert.
Transact-SQL-Syntaxkonventionen
Syntax
ISNULL ( check_expression , replacement_value )
Argumente
check_expression
Der Ausdruck , auf NULL
den überprüft werden soll. check_expression kann ein beliebiger Typ sein.
replacement_value
Der Ausdruck, der zurückgegeben werden soll, wenn check_expression ist NULL
. 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 Literal NULL
als check_expression bereitgestellt wird, ISNULL
wird der Datentyp des replacement_value zurückgegeben. Wenn ein Literal NULL
als check_expression angegeben wird und keine replacement_value angegeben wird, ISNULL
wird ein Int zurückgegeben.
Hinweise
Der Wert von check_expression wird zurückgegeben, wenn dies nicht NULL
der Wert ist. Andernfalls wird replacement_value zurückgegeben, nachdem sie implizit in den Typ der check_expression konvertiert wurde, wenn die Typen unterschiedlich sind. replacement_value kann gekürzt werden, wenn replacement_value länger als check_expression ist.
Hinweis
Verwenden Sie COALESCE , um den ersten Nicht-Null-Wert zurückzugeben.
Beispiele
Die Transact-SQL-Codebeispiele in diesem Artikel verwenden die AdventureWorks2022
- oder AdventureWorksDW2022
-Beispieldatenbank, die Sie von der Homepage Microsoft SQL Server Samples and Community Projects herunterladen können.
A. Verwenden von ISNULL mit AVG
Im folgenden Beispiel wird das Durchschnittsgewicht aller Produkte gesucht. Er ersetzt den Wert 50
für alle NULL
Einträge in der Weight
Spalte der Product
Tabelle.
USE AdventureWorks2022;
GO
SELECT AVG(ISNULL(Weight, 50))
FROM Production.Product;
GO
Hier sehen Sie das Ergebnis.
59.79
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 AdventureWorks2022
ausgewählt. Wenn die maximale Menge für ein bestimmtes Sonderangebot lautet, lautet NULL
0.00
die MaxQty
im Resultset angezeigte Menge.
USE AdventureWorks2022;
GO
SELECT Description, DiscountPct, MinQty, ISNULL(MaxQty, 0.00) AS 'Max Quantity'
FROM Sales.SpecialOffer;
GO
Hier sehen Sie das Ergebnis.
Beschreibung | DiscountPct | MinQty | Höchstmenge |
---|---|---|---|
No Discount |
0,00 | 0 | 0 |
Volume Discount 11 to 14 |
0,02 | 11 | 14 |
Volume Discount 15 to 24 |
0.05 | 15 | 24 |
Volume Discount 25 to 40 |
0,10 | 25 | 40 |
Volume Discount 41 to 60 |
0,15 | 41 | 60 |
Volume Discount over 60 |
0,20 | 61 | 0 |
Mountain-100 Clearance Sale |
0,35 | 0 | 0 |
Sport Helmet Discount-2002 |
0,10 | 0 | 0 |
Road-650 Overstock |
0,30 | 0 | 0 |
Mountain Tire Sale |
0,50 | 0 | 0 |
Sport Helmet Discount-2003 |
0,15 | 0 | 0 |
LL Road Frame Sale |
0,35 | 0 | 0 |
Touring-3000 Promotion |
0,15 | 0 | 0 |
Touring-1000 Promotion |
0,20 | 0 | 0 |
Half-Price Pedal Sale |
0,50 | 0 | 0 |
Mountain-500 Silver Clearance Sale |
0,40 | 0 | 0 |
Im folgenden Beispiel wird ISNULL
ein NULL
Wert für Color
, durch die Zeichenfolge None
ersetzt.
USE AdventureWorks2022;
GO
SELECT ProductID,
Name,
ProductNumber,
ISNULL(Color, 'None') AS Color
FROM Production.Product;
Dies ist ein Auszug aus dem Resultset.
ProductID | Name | ProductNumber | Color |
---|---|---|---|
1 | Adjustable Race |
AR-5381 | Keine |
2 | Bearing Ball |
BA-8327 | Keine |
3 | BB Ball Bearing |
BE-2349 | Keine |
4 | Headset Ball Bearings |
BE-2908 | Keine |
316 | Blade |
BL-2036 | Keine |
317 | LL Crankarm |
CA-5965 | Schwarz |
318 | ML Crankarm |
CA-6738 | Schwarz |
319 | HL Crankarm |
CA-7457 | Schwarz |
C. Testen für NULL
eine WHERE-Klausel
Verwenden ISNULL
Sie diese Option nicht, um Werte zu finden NULL
. 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 AdventureWorks2022;
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. Er ersetzt den Wert 50
für alle NULL
Einträge in der Weight
Spalte der Product
Tabelle.
-- Uses AdventureWorksDW
SELECT AVG(ISNULL(Weight, 50))
FROM dbo.DimProduct;
Hier sehen Sie das Ergebnis.
52.88
E. Verwenden von ISNULL
Im folgenden Beispiel werden ISNULL
Werte in der Spalte MinPaymentAmount
getestet NULL
und der Wert 0.00
für diese Zeilen angezeigt.
-- 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 zum Testen von 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 AdventureWorksDW
SELECT EnglishProductName, Weight
FROM dbo.DimProduct
WHERE Weight IS NULL;