Функция 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

-- Syntax for SQL Server, Azure SQL Database, Azure SQL Data Warehouse, Parallel Data Warehouse  

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_expresssion.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. Если литерал 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_value длиннее, чем check_expression.replacement_value can be truncated if replacement_value is longer than check_expression.

Примечание

Используйте COALESCE ( Transact-SQL ) для возврата первое значение отличное от null.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.

DescriptionDescription 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
Спорт 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
Спорт Helmet DiSport Helmet Di 0,150.15 00 00
LL Road Frame SLL Road Frame S 0.350.35 00 00
Обр Touring-3000Touring-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 Association 0.00000.0000
Bike StoreA Bike Store 0.00000.0000
Производственного циклаA Cycle Shop 0.00000.0000
Компания велосипед нормальноA Great Bicycle Company 0.00000.0000
Это типичный велосипеда магазинA Typical Bike Shop 200.0000200.0000
Допустимые продажи и службыAcceptable 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)
РАВЕН NULL ( Transact-SQL ) IS NULL (Transact-SQL)
Системные функции (Transact-SQL) System Functions (Transact-SQL)
ГДЕ ( Transact-SQL ) WHERE (Transact-SQL)
ОБЪЕДИНЕННЫЙ ( Transact-SQL )COALESCE (Transact-SQL)