Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
Применимо к:SQL Server
База данных Azure SQL
Управляемый экземпляр Azure SQL
Azure Synapse Analytics
Система платформы аналитики (PDW)
Конечная точка SQL аналитики в Microsoft Fabric
Хранилище в Microsoft Fabric
База данных SQL в Microsoft Fabric
Заменяет NULL указанное значение замены.
Соглашения о синтаксисе Transact-SQL
Синтаксис
ISNULL ( check_expression , replacement_value )
Аргументы
check_expression
Проверяемое . Аргумент check_expression может быть любого типа.
replacement_value
Выражение, возвращаемое, если check_expressionNULL. Аргумент replacement_value должен иметь тип, который может быть неявно преобразован в тип check_expression.
Типы возвращаемых данных
Возвращает тип, совпадающий с типом выражения check_expression. Если литерал NULL предоставляется как check_expression, ISNULL возвращает тип данных replacement_value. Если литерал предоставляется как check_expression и не NULL, возвращает ISNULL.
Замечания
Значение check_expression возвращается, если это не NULLтак.
В противном случае replacement_value возвращается после неявного преобразования в тип check_expression, если типы отличаются. Значение replacement_value может усекаться, если значение replacement_value длиннее, чем check_expression.
Примечание.
Используйте COALESCE , чтобы вернуть первое непустое значение.
Примеры
Примеры кода в этой статье используют базу данных образца AdventureWorks2025 или AdventureWorksDW2025, которую можно скачать с домашней страницы образцов и проектов сообщества 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
Следующий пример производит выборку описания, процента скидки, минимального и максимального количества для всех специальных предложений из базы AdventureWorks2025. Если максимальное количество для конкретного специального предложения равно 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 |
|---|---|
| Велосипедная ассоциация | 0,0000 |
| Велосипедный магазин | 0,0000 |
| Веломагазин | 0,0000 |
| Отличная велосипедная компания | 0,0000 |
| Типичный веломагазин | 200,0000 |
| Приемлемые продажи и обслуживание | 0,0000 |
F. Использование IS NULL для проверки значения NULL в предложении WHERE
В приведенном ниже примере выполняется поиск всех продуктов, имеющих значение NULL в столбце Weight. Заметьте, что между словами IS и NULL стоит пробел.
-- Uses AdventureWorksDW
SELECT EnglishProductName, Weight
FROM dbo.DimProduct
WHERE Weight IS NULL;