Los últimos tutoriales de desarrollo web
 

SQL Funciones NULL


SQL ISNULL() , NVL() , IFNULL() y COALESCE() Funciones

Mira el siguiente "Products" tabla:

p_id Nombre del producto Precio unitario Unidades en Stock UnidadesEnPedido
1 jarlsberg 10.45 dieciséis 15
2 Mascarpone 32.56 23
3 Gorgonzola 15.67 9 20

Supongamos que el "UnitsOnOrder" columna es opcional, y puede contener valores nulos.

Tenemos la siguiente instrucción SELECT:

SELECT ProductName,UnitPrice*(UnitsInStock+UnitsOnOrder)
FROM Products

En el ejemplo anterior, si alguna de las "UnitsOnOrder" los valores son nulos, el resultado es NULL.

De Microsoft ISNULL() función se utiliza para especificar cómo queremos tratar a los valores NULL.

El NVL() , IFNULL() , y COALESCE() funciones también se pueden utilizar para conseguir el mismo resultado.

En este caso queremos que los valores NULL para ser cero.

A continuación, si "UnitsOnOrder" es NULL no dañará el cálculo, porque ISNULL() devuelve un cero si el valor es NULL:

MS Access

SELECT ProductName,UnitPrice*(UnitsInStock+IIF(ISNULL(UnitsOnOrder),0,UnitsOnOrder))
FROM Products

SQL Server

SELECT ProductName,UnitPrice*(UnitsInStock+ISNULL(UnitsOnOrder,0))
FROM Products

Oracle

Oracle no tiene un ISNULL() función. Sin embargo, podemos utilizar el NVL() función para conseguir el mismo resultado:

SELECT ProductName,UnitPrice*(UnitsInStock+NVL(UnitsOnOrder,0))
FROM Products

MySQL

MySQL tiene una ISNULL() función. Sin embargo, funciona un poco diferente de la de Microsoft ISNULL() función.

En MySQL podemos utilizar el IFNULL() la función, así:

SELECT ProductName,UnitPrice*(UnitsInStock+IFNULL(UnitsOnOrder,0))
FROM Products

o podemos usar el COALESCE() la función, así:

SELECT ProductName,UnitPrice*(UnitsInStock+COALESCE(UnitsOnOrder,0))
FROM Products