Compartir vía


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 NULLes . 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 pueden 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;