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

Применимо к:SQL Server База данных SQL Azure Управляемый экземпляр SQL Azure Управляемый экземпляр SQL Azure Конечная точка аналитики аналитики Synapse Analytics Analytics (PDW)SQL Analyticsв Microsoft FabricХранилище в Microsoft Fabric

Заменяет значение NULL указанным замещающим значением.

Соглашения о синтаксисе Transact-SQL

Синтаксис

ISNULL ( check_expression , replacement_value )  

Примечание.

Сведения о синтаксисе Transact-SQL для SQL Server 2014 (12.x) и более ранних версиях см . в документации по предыдущим версиям.

Аргументы

check_expression
Выражение, которое необходимо проверить на равенство значению NULL. Аргумент check_expression может быть любого типа.

replacement_value
Выражение, возвращаемое, если check_expression имеет значение NULL. Аргумент replacement_value должен иметь тип, который может быть неявно преобразован в тип check_expression.

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

Возвращает тип, совпадающий с типом выражения check_expression. Если в аргументе check_expression предоставлено литеральное значение NULL, возвращает тип данных replacement_value. Если в аргументе check_expression предоставлено литеральное значение NULL, а аргумент replacement_value не задан, возвращает int.

Замечания

Возвращается значение check_expression, если это выражение не равно NULL. В противном случае возвращается значение replacement_value. Если типы являются разными, то тип replacement_value неявно преобразуется в тип check_expression. Значение replacement_value может усекаться, если значение replacement_value длиннее, чем check_expression.

Примечание.

Для возврата первого значения, отличного от NULL, используйте функцию COALESCE (Transact-SQL).

Примеры

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

Следующий пример демонстрирует расчет среднего значения веса всех продуктов. Все записи со значением NULL в столбце 50 таблицы Weight заменяются значением Product.

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  

Результирующий набор:

Description DiscountPct MinQty Максимальное количество
Без скидки 0.00 0 0
Оптовая скидка 0.02 11 14
Оптовая скидка 0.05 15 4
Оптовая скидка 0.10 25 0
Оптовая скидка 0,15 41 0
Оптовая скидка 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. Проверка значений NULL в предложении WHERE

Не используйте для поиска значений NULL выражение ISNULL, вместо него следует использовать выражение IS NULL. В следующем примере выполняется поиск всех продуктов, имеющих значение NULL в столбце веса. Заметьте, что между словами IS и NULL стоит пробел.

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

Примеры: Azure Synapse Analytics и система платформы аналитики (PDW)

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

В приведенном ниже примере рассчитывается среднее значение веса всех продуктов в образце таблицы. Все записи со значением NULL в столбце 50 таблицы Weight заменяются значением Product.

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

Результирующий набор:

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

Д. Использование функции ISNULL

В приведенном ниже примере функция ISNULL используется для поиска значений NULL в столбце MinPaymentAmount и отображения значения 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
Acceptable Sales & Service 0,0000

F. Использование функции IS NULL для проверки на значение NULL в предложении WHERE

В приведенном ниже примере выполняется поиск всех продуктов, имеющих значение 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)