ISNULL (Transact-SQL)

Reemplaza NULL con el valor de reemplazo especificado.

Icono de vínculo a temas Convenciones de sintaxis de Transact-SQL

Sintaxis

ISNULL ( check_expression , replacement_value )

Argumentos

  • check_expression
    Es la expresión que se va a comprobar si es NULL. check_expression puede ser de cualquier tipo.

  • replacement_value
    Es la expresión que se devolverá si check_expression es NULL. replacement_value debe ser de un tipo de datos que se pueda convertir implícitamente al tipo de check_expresssion.

Tipos de valor devuelto

Devuelve el mismo tipo que check_expression. Si no se proporciona un literal NULL como check_expression, devuelve el tipo de datos del replacement_value. Si no se proporciona un literal NULL como check_expression y no se proporciona replacement_value, devuelve un int.

Comentarios

Se devuelve el valor de check_expression si no es NULL; de lo contrario, se devuelve replacement_value una vez convertido implícitamente al tipo de check_expression, si los tipos son diferentes. replacement_value se puede truncar si replacement_value es más largo que check_expression.

[!NOTA]

Use COALESCE (Transact-SQL) para devolver el primer valor distinto de NULL.

Ejemplos

A.Usar ISNULL con AVG

En el ejemplo siguiente se busca el promedio del peso de todos los productos. Sustituye el valor 50 para todas las entradas NULL en la columna Weight de la tabla Product.

USE AdventureWorks2012;
GO
SELECT AVG(ISNULL(Weight, 50))
FROM Production.Product;
GO

El conjunto de resultados es el siguiente.

--------------------------

59.79

(1 row(s) affected)

B.Usar 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 AdventureWorks2012. Si la cantidad máxima de una oferta especial determinada es NULL, el valor de MaxQty mostrado en el conjunto de resultados es 0.00.

USE AdventureWorks2012;
GO
SELECT Description, DiscountPct, MinQty, ISNULL(MaxQty, 0.00) AS 'Max Quantity'
FROM Sales.SpecialOffer;
GO

El conjunto de resultados es el siguiente.

Description       DiscountPct       MinQty      Max Quantity

---------------   -------------     --------    ---------------

No Discount       0.00              0           0

Volume Discount   0.02              11          14

Volume Discount   0.05              15          4

Volume Discount   0.10              25          0

Volume Discount   0.15              41          0

Volume Discount   0.20              61          0

Mountain-100 Cl   0.35              0           0

Sport Helmet Di   0.10              0           0

Road-650 Overst   0.30              0           0

Mountain Tire S   0.50              0           0

Sport Helmet Di   0.15              0           0

LL Road Frame S   0.35              0           0

Touring-3000 Pr   0.15              0           0

Touring-1000 Pr   0.20              0           0

Half-Price Peda   0.50              0           0

Mountain-500 Si   0.40              0           0

(16 row(s) affected)

C.Comprobar si hay valores NULL en una cláusula WHERE

No utilice ISNULL para buscar los valores NULL. Use IS NULL en su lugar. 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 AdventureWorks2012;
GO
SELECT Name, Weight
FROM Production.Product
WHERE Weight IS NULL;
GO

Vea también

Referencia

Expresiones (Transact-SQL)

IS [NOT] NULL (Transact-SQL)

Funciones del sistema (Transact-SQL)

WHERE (Transact-SQL)

COALESCE (Transact-SQL)