ISNULL (Transact-SQL)

 

ESTE TEMA SE APLICA A: síSQL Server (a partir de 2008)síBase de datos SQL de AzuresíAlmacenamiento de datos SQL de Azure síAlmacenamiento de datos paralelos

Sustituye el valor NULL por el valor especificado.

Topic link icon Convenciones de sintaxis de Transact-SQL

-- Syntax for SQL Server, Azure SQL Database, Azure SQL Data Warehouse, Parallel Data Warehouse  
  
ISNULL ( check_expression , replacement_value )  

check_expression
Es el expresión para comprobar si hay valores NULL. check_expression puede ser de cualquier tipo.

replacement_value
Es la expresión que se devuelve si check_expression es NULL. replacement_value debe ser de un tipo que sea implícitamente convertible al tipo de check_expresssion.

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

El valor de check_expression se devuelve si no es NULL; en caso contrario, replacement_value se devuelve después de que se convierte implícitamente al tipo de check_expression, si los tipos son diferentes. replacement_value puede truncarse si replacement_value es mayor que check_expression.

System_CAPS_ICON_note.jpg Nota


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

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  

D. Usar 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 para todas las entradas NULL en la columna Weight de la tabla Product.

-- Uses AdventureWorks  
  
SELECT AVG(ISNULL(Weight, 50))  
FROM dbo.DimProduct;  

El conjunto de resultados es el siguiente.

--------------------------   
52.88   

E. Usar ISNULL

En el ejemplo siguiente se usa ISNULL para comprobar los valores NULL en la columna MinPaymentAmount y mostrar el valor 0.00 para las 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

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

A Bicycle Association 0.0000

A Bike Store 0.0000

A Cycle Shop 0.0000

A Great Bicycle Company 0.0000

A Typical Bike Shop 200.0000

Acceptable Sales & Service 0.0000

F. Uso de IS NULL para probar si hay valores NULL en una cláusula WHERE

En el ejemplo siguiente se busca todos los productos que tienen NULL en la Weight columna. Tenga en cuenta el espacio entre IS y NULL.

-- Uses AdventureWorks  
  
SELECT EnglishProductName, Weight  
FROM dbo.DimProduct  
WHERE Weight IS NULL;  

Expresiones ( Transact-SQL )
ES NULL ( Transact-SQL )
Funciones del sistema ( Transact-SQL )
DONDE ( Transact-SQL )
COALESCE ( Transact-SQL )

Adiciones de comunidad

AGREGAR
Mostrar: