SQL NULLFunciones


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

Mira la siguiente tabla "Products":

P_Id ProductName UnitPrice UnitsInStock UnitsOnOrder
1 Jarlsberg 10.45 16 15
2 Mascarpone 32.56 23
3 Gorgonzola 15.67 9 20

Supongamos que "UnitsOnOrder" es opcional y puede contener valores NULL.

Usamos la siguiente sentencia SELECT:

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

En el ejemplo anterior, si el valor de "UnitsOnOrder" es NULL, entonces el resultado es NULL.

La función ISNULL() de Microsoft se usa para especificar cómo manejar los valores NULL.

Las funciones NVL(), IFNULL() y COALESCE() también pueden lograr el mismo resultado.

Aquí, queremos que el valor NULL sea 0.

A continuación, si "UnitsOnOrder" es NULL, no afectará el cálculo, porque si el valor es NULL, ISNULL() devuelve 0:

SQL Server / MS Access

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

Oracle

Oracle no tiene la función ISNULL(). Sin embargo, podemos usar la función NVL() para lograr el mismo resultado:

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

MySQL

MySQL también tiene una función similar a ISNULL(). Sin embargo, su forma de trabajar es un poco diferente a la función ISNULL() de Microsoft.

En MySQL, podemos usar la función IFNULL(), como se muestra a continuación:

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

O podemos usar la función COALESCE(), como se muestra a continuación:

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

Otras extensiones