Функция ISNULL (Transact-SQL)ISNULL (Transact-SQL)

ОБЛАСТЬ ПРИМЕНЕНИЯ ЭТОЙ СТАТЬИ: даSQL Server (начиная с 2008)даБаза данных SQL AzureдаХранилище данных SQL AzureдаParallel Data WarehouseTHIS TOPIC APPLIES TO: yesSQL Server (starting with 2008)yesAzure SQL DatabaseyesAzure SQL Data Warehouse yesParallel Data Warehouse

Заменяет значение NULL указанным замещающим значением.Replaces NULL with the specified replacement value.

Значок ссылки на раздел Синтаксические обозначения в Transact-SQLTopic 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_expresssion.

Типы возвращаемых данныхReturn Types

Возвращает тип, совпадающий с типом выражения check_expression.Returns the same type as check_expression. Если в аргументе check_expression предоставлено литеральное значение NULL, возвращает тип данных replacement_value.If a literal NULL is provided as check_expression, returns the datatype of the replacement_value. Если в аргументе check_expression предоставлено литеральное значение NULL, а аргумент replacement_value не задан, возвращает int.If a literal NULL is provided as check_expression and no replacement_value is provided, returns an int.

RemarksRemarks

Возвращается значение check_expression, если это выражение не равно NULL. В противном случае возвращается значение replacement_value. Если типы являются разными, то тип 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_value длиннее, чем check_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. Использование функции ISNULL с функцией AVGUsing ISNULL with AVG

Следующий пример демонстрирует расчет среднего значения веса всех продуктов.The following example finds the average of the weight of all products. Все записи со значением NULL в столбце 50 таблицы Weight заменяются значением 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. Использование функции ISNULLUsing ISNULL

Следующий пример производит выборку описания, процента скидки, минимального и максимального количества для всех специальных предложений из базы AdventureWorks2012.The following example selects the description, discount percentage, minimum quantity, and maximum quantity for all special offers in AdventureWorks2012. Если максимальное количество для отдельного специального предложения равно NULL, отображаемое значение MaxQty в результирующем наборе заменяется на 0.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 Discount 0,000.00 00 00
Оптовая скидкаVolume Discount 0,020.02 1111 1414
Оптовая скидкаVolume Discount 0,050.05 1515 44
Оптовая скидкаVolume Discount 0,100.10 2525 00
Оптовая скидкаVolume Discount 0,150.15 4141 00
Оптовая скидкаVolume 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. Проверка значений NULL в предложении WHERETesting for NULL in a WHERE clause

Не используйте для поиска значений NULL выражение ISNULL,Do not use ISNULL to find NULL values. вместо него следует использовать выражение IS NULL.Use IS NULL instead. В следующем примере выполняется поиск всех продуктов, имеющих значение NULL в столбце веса.The following example finds all products that have NULL in the weight column. Заметьте, что между словами IS и NULL стоит пробел.Note the space between IS and NULL.

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

Примеры: Хранилище данных SQL AzureAzure SQL Data Warehouse и Параллельное хранилище данныхParallel Data WarehouseExamples: Хранилище данных SQL AzureAzure SQL Data Warehouse and Параллельное хранилище данныхParallel Data Warehouse

Г.D. Использование функции ISNULL с функцией AVGUsing ISNULL with AVG

В приведенном ниже примере рассчитывается среднее значение веса всех продуктов в образце таблицы.The following example finds the average of the weight of all products in a sample table. Все записи со значением NULL в столбце 50 таблицы Weight заменяются значением 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. Использование функции ISNULLUsing ISNULL

В приведенном ниже примере функция ISNULL используется для поиска значений NULL в столбце MinPaymentAmount и отображения значения 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. Использование функции IS NULL для проверки на значение NULL в предложении WHEREUsing 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. Заметьте, что между словами IS и NULL стоит пробел.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)