ISNULL (Transact-SQL)
適用於:Microsoft Fabric 中 Microsoft Fabric倉儲中的 SQL ServerAzure SQL 資料庫 Azure SQL 受控執行個體 Azure SynapseAnalytics Analytics Platform System (PDW)SQL 分析端點
以指定的取代值來取代 NULL。
Syntax
ISNULL ( check_expression , replacement_value )
注意
若要檢視 SQL Server 2014 (12.x) 和舊版的 Transact-SQL 語法,請參閱 舊版檔。
引數
check_expression
為要檢查 NULL 的運算式。 check_expression 可為任何類型。
replacement_value
為 check_expression 是 NULL 時,要傳回的運算式。 replacement_value 必須是能夠隱含轉換成 check_expression 類型的類型。
傳回型別
傳回與 check_expression 相同的類型。 若將常值 NULL 作為 check_expression 提供,則會傳回 replacement_value 的資料類型。 若將常值 NULL 作為 check_expression 提供,並且未提供任何 replacement_value,則會傳回 int。
備註
如果 check_expression 的值不是 NULL,則會傳回該值;否則會在其隱含轉換成 check_expression 的類型後傳回 replacement_value (若兩者類型不同的話)。 若 replacement_value 的長度超過 check_expression,則 replacement_value 可能會被截斷。
注意
使用 COALESCE (Transact-SQL) 來傳回第一個不是 NULL 的值。
範例
A. 使用 ISNULL 搭配 AVG
下列範例會尋找所有產品的加權平均值。 它會在 50
資料表的 Weight
資料行中,用值 Product
來取代所有 NULL 項目。
USE AdventureWorks2022;
GO
SELECT AVG(ISNULL(Weight, 50))
FROM Production.Product;
GO
以下為結果集。
--------------------------
59.79
(1 row(s) affected)
B. 使用 ISNULL
下列範例會選取 AdventureWorks2022
中所有特殊供應項目的描述、折扣百分比、最小數量和最大數量。 如果所有特殊供應項目的最大數量是 NULL,結果集所顯示的 MaxQty
便是 0.00
。
USE AdventureWorks2022;
GO
SELECT Description, DiscountPct, MinQty, ISNULL(MaxQty, 0.00) AS 'Max Quantity'
FROM Sales.SpecialOffer;
GO
以下為結果集。
描述 | DiscountPct | MinQty | 最大數量 (Max Quantity) |
---|---|---|---|
{1}No Discount{2} | 0.00 | 0 | 0 |
{1}Volume Discount{2} | 0.02 | 11 | 14 |
{1}Volume Discount{2} | 0.05 | 15 | 4 |
{1}Volume Discount{2} | 0.10 | 25 | 0 |
{1}Volume Discount{2} | 0.15 | 41 | 0 |
{1}Volume Discount{2} | 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. 在 WHERE 子句中測試 NULL
請勿使用 ISNULL 來尋找 NULL 值。 請改用 IS NULL。 下列範例會尋找加權資料行中有 NULL
的所有產品。 請注意 IS
和 NULL
之間的空格。
USE AdventureWorks2022;
GO
SELECT Name, Weight
FROM Production.Product
WHERE Weight IS NULL;
GO
範例:Azure Synapse Analytics 和 Analytics Platform System (PDW)
D. 使用 ISNULL 搭配 AVG
下列範例會尋找範例資料表中所有產品的加權平均值。 它會在 50
資料表的 Weight
資料行中,用值 Product
來取代所有 NULL 項目。
-- Uses AdventureWorks
SELECT AVG(ISNULL(Weight, 50))
FROM dbo.DimProduct;
以下為結果集。
--------------------------
52.88
E. 使用 ISNULL
下列範例會使用 ISNULL 來在 MinPaymentAmount
資料行中測試 NULL 值,然後為那些資料列顯示 0.00
值。
-- Uses AdventureWorks
SELECT ResellerName,
ISNULL(MinPaymentAmount,0) AS MinimumPayment
FROM dbo.DimReseller
ORDER BY ResellerName;
以下為部分結果集。
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 |
可接受的銷售與服務 | 0.0000 |
F. 使用 IS NULL 來在 WHERE 子句中測試 NULL
下列範例會尋找 NULL
資料行中有 Weight
的所有產品。 請注意 IS
和 NULL
之間的空格。
-- Uses AdventureWorks
SELECT EnglishProductName, Weight
FROM dbo.DimProduct
WHERE Weight IS NULL;
另請參閱
運算式 (Transact-SQL)
IS NULL (Transact-SQL)
系統函數 (Transact-SQL)
WHERE (Transact-SQL)
COALESCE (Transact-SQL)
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應