ISNULL (Transact-SQL)ISNULL (Transact-SQL)

適用対象: はいSQL Server はいAzure SQL Database はいAzure Synapse Analytics (SQL DW) はいParallel Data Warehouse APPLIES TO: YesSQL Server YesAzure SQL Database YesAzure Synapse Analytics (SQL DW) YesParallel Data Warehouse

NULL 値を、指定された値に置き換えます。Replaces NULL with the specified replacement value.

トピック リンク アイコン Transact-SQL 構文表記規則Topic link icon Transact-SQL Syntax Conventions

構文Syntax

ISNULL ( check_expression , replacement_value )  

引数Arguments

check_expressioncheck_expression
NULL かどうかを調べるです。Is the expression to be checked for NULL. check_expression は任意のデータ型です。check_expression can be of any type.

replacement_valuereplacement_value
check_expression が NULL の場合に返される式です。Is the expression to be returned if check_expression is NULL. replacement_value は、暗黙的に check_expression の型に変換できる型である必要があります。replacement_value must be of a type that is implicitly convertible to the type of check_expression.

戻り値の型Return Types

check_expression と同じ型が返されます。Returns the same type as check_expression. リテラル NULL が check_expression として指定されている場合、replacement_value のデータ型を返します。If a literal NULL is provided as check_expression, returns the datatype of the replacement_value. リテラル NULL が check_expression として指定されていて replacement_value が指定されていない場合、int を返します。If a literal NULL is provided as check_expression and no replacement_value is provided, returns an int.

解説Remarks

check_expression の値が NULL でない場合、その値が返されます。それ以外の場合は、replacement_value が返されます。このとき、型どうしが異なる場合は check_expression の型に暗黙的に変換されてから返されます。The value of check_expression is returned if it is not NULL; otherwise, replacement_value is returned after it is implicitly converted to the type of check_expression, if the types are different. replacement_value は、replacement_valuecheck_expression より長い場合は切り捨てられることがあります。replacement_value can be truncated if replacement_value is longer than check_expression.

注意

最初の null 以外の値を返すには、COALESCE (Transact-SQL) を使用します。Use COALESCE (Transact-SQL) to return the first non-null value.

Examples

A.A. AVG で ISNULL を使用するUsing ISNULL with AVG

次の例では、すべての製品の重量の平均を求めます。The following example finds the average of the weight of all products. 50 テーブルの Weight 列にあるすべての NULL エントリに、値 Product を代入します。It substitutes the value 50 for all NULL entries in the Weight column of the Product table.

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

結果セットは次のようになります。Here is the result set.

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

B.B. ISNULL を使用するUsing ISNULL

次の例では、AdventureWorks2012 のすべての特価品について、説明、値引き率、最小数量、および最大数量を選択します。The following example selects the description, discount percentage, minimum quantity, and maximum quantity for all special offers in AdventureWorks2012. ある特価品の最大数量が NULL の場合、結果セットに表示される MaxQty0.00 です。If the maximum quantity for a particular special offer is NULL, the MaxQty shown in the result set is 0.00.

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

結果セットは次のようになります。Here is the result set.

説明Description DiscountPctDiscountPct MinQtyMinQty 最大数量Max Quantity
No DiscountNo Discount 0.000.00 00 00
Volume DiscountVolume Discount 0.020.02 1111 1414
Volume DiscountVolume Discount 0.050.05 1515 44
Volume DiscountVolume Discount 0.100.10 2525 00
Volume DiscountVolume Discount 0.150.15 4141 00
Volume DiscountVolume Discount 0.200.20 6161 00
Mountain-100 ClMountain-100 Cl 0.350.35 00 00
Sport Helmet DiSport Helmet Di 0.100.10 00 00
Road-650 OverstRoad-650 Overst 0.300.30 00 00
Mountain Tire SMountain Tire S 0.500.50 00 00
Sport Helmet DiSport Helmet Di 0.150.15 00 00
LL Road Frame SLL Road Frame S 0.350.35 00 00
Touring-3000 PrTouring-3000 Pr 0.150.15 00 00
Touring-1000 PrTouring-1000 Pr 0.200.20 00 00
Half-Price PedaHalf-Price Peda 0.500.50 00 00
Mountain-500 SiMountain-500 Si 0.400.40 00 00

(16 row(s) affected)

C.C. WHERE 句で NULL をテストするTesting for NULL in a WHERE clause

NULL 値の検索に ISNULL を使用しないでください。Do not use ISNULL to find NULL values. 代わりに IS NULL を使用します。Use IS NULL instead. 次の例では、weight 列が NULL の製品をすべて検索しています。The following example finds all products that have NULL in the weight column. ISNULL の間にスペースがあることに注意してください。Note the space between IS and NULL.

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

例: Azure Synapse Analytics (SQL Data Warehouse)Azure Synapse Analytics (SQL Data Warehouse)Parallel Data WarehouseParallel Data WarehouseExamples: Azure Synapse Analytics (SQL Data Warehouse)Azure Synapse Analytics (SQL Data Warehouse) and Parallel Data WarehouseParallel Data Warehouse

D.D. AVG で ISNULL を使用するUsing ISNULL with AVG

次の例では、サンプル テーブルのすべての製品の重量の平均を求めます。The following example finds the average of the weight of all products in a sample table. 50 テーブルの Weight 列にあるすべての NULL エントリに、値 Product を代入します。It substitutes the value 50 for all NULL entries in the Weight column of the Product table.

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

結果セットは次のようになります。Here is the result set.

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

E.E. ISNULL を使用するUsing ISNULL

次の例では、ISNULL を使ってMinPaymentAmount 列が NULL かどうかをテストし、NULL の行には値 0.00 を表示します。The following example uses ISNULL to test for NULL values in the column MinPaymentAmount and display the value 0.00 for those rows.

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

次に結果セットの一部を示します。Here is a partial result set.

ResellerNameResellerName MinimumPaymentMinimumPayment
A Bicycle AssociationA Bicycle Association 0.00000.0000
A Bike StoreA Bike Store 0.00000.0000
A Cycle ShopA Cycle Shop 0.00000.0000
A Great Bicycle CompanyA Great Bicycle Company 0.00000.0000
A Typical Bike ShopA Typical Bike Shop 200.0000200.0000
Acceptable Sales & ServiceAcceptable Sales & Service 0.00000.0000

F.F. IS NULL を使用して WHERE 句の NULL をテストするUsing IS NULL to test for NULL in a WHERE clause

次の例では、NULL 列が Weight の製品をすべて検索しています。The following example finds all products that have NULL in the Weight column. ISNULL の間にスペースがあることに注意してください。Note the space between IS and NULL.

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

参照See Also

式 (Transact-SQL) Expressions (Transact-SQL)
IS NULL (Transact-SQL) IS NULL (Transact-SQL)
システム関数 (Transact-SQL) System Functions (Transact-SQL)
WHERE (Transact-SQL) WHERE (Transact-SQL)
COALESCE (Transact-SQL)COALESCE (Transact-SQL)