Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Применимо к: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;