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