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