ISNULL (Transact-SQL)
Se aplica a: SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW) Punto de conexión de análisis SQL en Microsoft Fabric Almacenamiento en Microsoft Fabric
NULL
Reemplaza por el valor de reemplazo especificado.
Convenciones de sintaxis de Transact-SQL
Sintaxis
ISNULL ( check_expression , replacement_value )
Argumentos
check_expression
Expresión que se va a comprobar para NULL
. check_expression puede ser de cualquier tipo.
replacement_value
Expresión que se va a devolver si check_expression es NULL
. valor_de_reemplazo debe ser de un tipo que se pueda convertir implícitamente en el tipo de expresión_de_comprobación.
Tipos de valores devueltos
Devuelve el mismo tipo que check_expression. Si se proporciona un literal NULL
como check_expression, ISNULL
devuelve el tipo de datos del replacement_value. Si se proporciona un literal NULL
como check_expression y no se proporciona ningún replacement_value , ISNULL
devuelve un valor int.
Comentarios
El valor de check_expression se devuelve si no NULL
es . De lo contrario, se devuelve replacement_value después de convertir implícitamente al tipo de check_expression, si los tipos son diferentes. replacement_value se puede truncar si replacement_value es mayor que check_expression.
Nota:
Use COALESCE para devolver el primer valor distinto de NULL.
Ejemplos
Los ejemplos de código de Transact-SQL de este artículo utilizan la base de datos de ejemplo AdventureWorks2022
o AdventureWorksDW2022
, que se puede descargar desde la página principal de Ejemplos y proyectos de la comunidad de Microsoft SQL Server.
A Uso de ISNULL con AVG
En el ejemplo siguiente se busca el promedio del peso de todos los productos. Sustituye el valor 50
de todas las NULL
entradas de la Weight
columna de la Product
tabla.
USE AdventureWorks2022;
GO
SELECT AVG(ISNULL(Weight, 50))
FROM Production.Product;
GO
Este es el conjunto de resultados.
59.79
B. Uso de ISNULL
En el siguiente ejemplo se selecciona la descripción, el porcentaje de descuento, la cantidad mínima y la cantidad máxima de todas las ofertas especiales de AdventureWorks2022
. Si la cantidad máxima de una oferta especial determinada es NULL
, el MaxQty
que se muestra en el conjunto de resultados es 0.00
.
USE AdventureWorks2022;
GO
SELECT Description, DiscountPct, MinQty, ISNULL(MaxQty, 0.00) AS 'Max Quantity'
FROM Sales.SpecialOffer;
GO
Este es el conjunto de resultados.
Descripción | DiscountPct | MinQty | Cantidad máxima |
---|---|---|---|
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 |
En el ejemplo siguiente se usa ISNULL
para reemplazar un NULL
valor para Color
, por la cadena None
.
USE AdventureWorks2022;
GO
SELECT ProductID,
Name,
ProductNumber,
ISNULL(Color, 'None') AS Color
FROM Production.Product;
A continuación se muestra un conjunto parcial de resultados.
ProductID | Nombre | ProductNumber | Color |
---|---|---|---|
1 | Adjustable Race |
AR-5381 | Ninguno |
2 | Bearing Ball |
BA-8327 | Ninguno |
3 | BB Ball Bearing |
BE-2349 | Ninguno |
4 | Headset Ball Bearings |
BE-2908 | Ninguno |
316 | Blade |
BL-2036 | Ninguno |
317 | LL Crankarm |
CA-5965 | Negro |
318 | ML Crankarm |
CA-6738 | Negro |
319 | HL Crankarm |
CA-7457 | Negro |
C. Prueba de NULL
en una cláusula WHERE
No use ISNULL
para buscar NULL
valores. En su lugar, use IS NULL
. En el ejemplo siguiente se buscan todos los productos que tienen NULL
en la columna de peso. Tenga en cuenta el espacio entre IS
y NULL
.
USE AdventureWorks2022;
GO
SELECT Name, Weight
FROM Production.Product
WHERE Weight IS NULL;
GO
Ejemplos: Azure Synapse Analytics y Sistema de la plataforma de análisis (PDW)
D. Uso de ISNULL con AVG
En el ejemplo siguiente se busca el promedio del peso de todos los productos en una tabla de ejemplo. Sustituye el valor 50
de todas las NULL
entradas de la Weight
columna de la Product
tabla.
-- Uses AdventureWorksDW
SELECT AVG(ISNULL(Weight, 50))
FROM dbo.DimProduct;
Este es el conjunto de resultados.
52.88
E. Uso de ISNULL
En el ejemplo siguiente se usa ISNULL
para probar los NULL
valores de la columna MinPaymentAmount
y mostrar el valor 0.00
de esas filas.
-- Uses AdventureWorks
SELECT ResellerName,
ISNULL(MinPaymentAmount,0) AS MinimumPayment
FROM dbo.DimReseller
ORDER BY ResellerName;
A continuación se muestra un conjunto parcial de resultados.
ResellerName | MinimumPayment |
---|---|
Una asociación de bicicleta | 0.0000 |
Una tienda de bicicletas | 0.0000 |
Una tienda de bicis | 0.0000 |
Una gran empresa de bicicletas | 0.0000 |
La típica tienda de bicicletas | 200.0000 |
Servicio y ventas aceptables | 0.0000 |
F. Uso de IS NULL para probar NULL en una cláusula WHERE
En el ejemplo siguiente se buscan todos los productos que tienen NULL
en la columna Weight
. Tenga en cuenta el espacio entre IS
y NULL
.
-- Uses AdventureWorksDW
SELECT EnglishProductName, Weight
FROM dbo.DimProduct
WHERE Weight IS NULL;