Поделиться через


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

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

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

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

Синтаксис

ISNULL ( check_expression , replacement_value )

Аргументы

check_expression

Проверяемое NULLвыражение. Аргумент check_expression может быть любого типа.

replacement_value

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

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

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

Замечания

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

Примечание.

Используйте COALESCE , чтобы вернуть первое непустое значение.

Примеры

Примеры кода Transact-SQL в этой статье используют AdventureWorks2022 базу данных или AdventureWorksDW2022 пример базы данных, которую можно скачать с домашней страницы примеров и проектов сообщества Microsoft SQL Server.

А. Использование ISNULL с AVG

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

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

Вот результирующий набор.

59.79

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 Максимальное количество
No Discount 0.00 0 0
Volume Discount 11 to 14 0.02 11 14
Volume Discount 15 to 24 0.05 15 24
Volume Discount 25 to 40 0.10 25 40
Volume Discount 41 to 60 0,15 41 60
Volume Discount over 60 0,20 61 0
Mountain-100 Clearance Sale 0,35 0 0
Sport Helmet Discount-2002 0.10 0 0
Road-650 Overstock 0,30 0 0
Mountain Tire Sale 0,50 0 0
Sport Helmet Discount-2003 0,15 0 0
LL Road Frame Sale 0,35 0 0
Touring-3000 Promotion 0,15 0 0
Touring-1000 Promotion 0,20 0 0
Half-Price Pedal Sale 0,50 0 0
Mountain-500 Silver Clearance Sale 0,40 0 0

В следующем примере используется ISNULL для замены NULL значения на Colorстроку None.

USE AdventureWorks2022;
GO
SELECT ProductID,
    Name,
    ProductNumber,
    ISNULL(Color, 'None') AS Color
FROM Production.Product;

Далее представлен частичный результирующий набор.

ProductID Имя. ProductNumber Color
1 Adjustable Race AR-5381 нет
2 Bearing Ball BA-8327 нет
3 BB Ball Bearing BE-2349 нет
4 Headset Ball Bearings BE-2908 нет
316 Blade BL-2036 нет
317 LL Crankarm CA-5965 Черный
318 ML Crankarm CA-6738 Черный
319 HL Crankarm CA-7457 Черный

В. Проверка на наличие NULL в предложении WHERE

Не используйте ISNULL для поиска NULL значений. Вместо этого используйте 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

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

-- Uses AdventureWorksDW

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 AdventureWorksDW

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