sql >> Base de Datos >  >> RDS >> MariaDB

Cómo funciona IFNULL() en MariaDB

En MariaDB, el IFNULL() La función nos permite reemplazar valores NULL con otro valor.

Sintaxis

IFNULL(expr1,expr2)

Si expr1 no es NULL , IFNULL() devuelve expr1 ; de lo contrario, devuelve expr2 .

Además, desde MariaDB 10.3, NVL() se puede usar como un alias para IFNULL() función. Por lo tanto, tenemos la opción de usar la siguiente sintaxis en su lugar:

NVL(expr1,expr2)

El resultado es el mismo independientemente de la sintaxis utilizada.

Ejemplo

Aquí hay un ejemplo básico que usa NULL constante:

SELECT IFNULL( null, 'No Value' );

Resultado:

No Value

En este caso, usé IFNULL() para reemplazar el valor NULL con No Value .

Esto es lo que sucede cuando el primer argumento no es NULL :

SELECT IFNULL( 'Spicy', 'No Value' );

Resultado:

Spicy

En este caso, se devuelve el primer argumento, porque no es NULL .

Ejemplo de base de datos

Supongamos que ejecutamos la siguiente consulta:

SELECT * FROM Employees;

Resultado:

empId	name	dept
-----   -----   -----
1	Jess	Sales
2	Rohit	NULL
3	Zohan	Sales
4	Homer	NULL

Podemos ver que dos filas tienen valores NULL en el dept columna.

En la siguiente consulta, usamos IFNULL() para reemplazar los valores NULL con un valor más significativo para el lector:

SELECT
    empId,
    name,
    IFNULL( dept, 'Not yet assigned' ) AS dept
FROM Employees;

Resultado:

empId	name	dept
-----   -----   ----------------
1	Jess	Sales
2	Rohit	Not yet assigned
3	Zohan	Sales
4	Homer	Not yet assigned

Expresiones

Se evalúa el valor actual del primer argumento. Por lo tanto, si proporcionamos una expresión como la siguiente:

SELECT IFNULL( 3 * 7, 0 );

Obtenemos esto:

21

Entonces, no obtenemos el 3 * 7 parte. Obtenemos el resultado de esa expresión (que en este caso es 21 ).

Lo mismo ocurre cuando el resultado de la expresión es NULL . Por ejemplo, si ejecutamos el siguiente código:

SELECT IFNULL( 3 / 0, 0 );

Obtenemos esto:

0.0000

Sin embargo, este es un ejemplo peligroso. Cero es un valor. NULL no es.

Devolver cero cuando hay un valor NULL podría ser engañoso o incluso completamente erróneo. Imagínense si estuviéramos tratando con precios. Podríamos terminar con un precio de cero, lo que podría ser incorrecto y costarle mucho dinero a la empresa.

Por lo tanto, en tales casos, generalmente es mejor usar un valor más significativo que transmita al lector que no hay valor.

Ejemplo:

SELECT IFNULL( 3 / 0, 'No value' );

Resultado:

No value

El NVL() Función

A partir de MariaDB 10.3, NVL() es un alias para IFNULL() . Por lo tanto, podemos reemplazar IFNULL() con NVL() en cualquiera de los ejemplos anteriores.

Ejemplo:

SELECT NVL( 3 / 0, 'No value' );

Resultado:

No value