SQLite equivalente a ISNULL(), NVL(), IFNULL() o COALESCE()

Junaid Khan 21 junio 2023
  1. Obtener registros con valores NULOS en la base de datos SQLite
  2. Use THEN y ELSE para buscar valores NULL en la base de datos SQLite
  3. Utilice la función COALESCE() en la base de datos SQLite
  4. Utilice la función NVL() en la base de datos SQLite
  5. Diferencia entre las funciones COALESCE() y ifnull()
  6. Diferencia entre las funciones COALESCE() y isnull()
SQLite equivalente a ISNULL(), NVL(), IFNULL() o COALESCE()

SQLite se utiliza para crear, leer, actualizar y eliminar registros de la base de datos. La base de datos contiene diferentes tablas para mantener los datos.

Cada tabla consta de filas y columnas, que llevan el registro. Estos registros suelen tener valores vacíos o nulos, lo que provoca problemas o errores al recuperar los datos.

Obtener registros con valores NULOS en la base de datos SQLite

Para obtener los registros de la base de datos SQLite, usamos la cláusula SELECT en la instrucción SQLite. La declaración SELECT también obtiene e ignora los valores NULL y obtiene el registro solo con valor.

SELECT field
FROM table
WHERE field = aCondition

Surge un problema cuando hay valores vacíos dentro de la tabla. Las declaraciones SELECT necesitan la verificación NULL para registrar o llenar los valores vacíos con un texto específico para acomodar los registros con valores vacíos.

SELECT field, [isnull](field, '')
FROM table
WHERE field = aCondition

En la declaración anterior, es posible que los valores NULL no puedan reconocer la función isnull(). Hay una función similar a la función isnull(), la función ifnull(), para solucionar este problema.

La sintaxis completa de la función ifnull() es la siguiente.

Sintaxis de la función ifnull():

ifnull(column, alternateValue)

Parámetros:

column La columna de destino en la base de datos SQLite.
alternateValue El valor seleccionado si el valor devuelto es nulo o vacío.

En las siguientes declaraciones, usamos la función ifnull() con la declaración SELECT. La primera declaración elimina todos los valores NULOS del registro y los reemplaza con una cadena vacía.

Puede agregar cualquier valor como reemplazo de los valores NULL en los registros de la base de datos. Esto se puede mostrar en la segunda declaración, donde un valor NULL se reemplaza por un valor de cadena This is a NULL en la base de datos SQLite.

La función ifnull() toma exactamente los dos argumentos y devuelve la primera cadena o texto no vacío o NULL si ambos argumentos proporcionados son NULL.

SELECT ifnull(NameofColumn,'')
SELECT ifnull(NULL,'This is a NULL');

Use THEN y ELSE para buscar valores NULL en la base de datos SQLite

Alternativamente, si el primer escenario no es adecuado para su condición, podemos usar la declaración condicional IS NULL para verificar los valores vacíos dentro de la tabla.

La siguiente declaración de SQLite es equivalente al comando ISNULL(fieldName, 0). La cláusula IS NULL devolverá todos los valores vacíos dentro de la base de datos.

Si se encuentra algún valor, ENTONCES reemplaza el vacío con un valor 0, ELSE si se encuentra algo (no vacío), entonces el valor permanece sin cambios.

SELECT fieldName FROM NameOfTable WHERE fieldName IS NULL THEN 0 ELSE fieldName END

Utilice la función COALESCE() en la base de datos SQLite

Similar a la función ifnull(), la función COALESCE() proporciona un valor alternativo al valor de la columna donde el valor dado es NULL. Para escribir la declaración de SQLite para verificar el valor nulo con la función COALESCE(), escribimos la declaración para la tabla dada.

La función COALESCE() funciona en SQLite versión 3.8.6 y superior.

identificación Cantidad
1 200
2 13
3 NULO
4 30
5 512
SELECT COALESCE(Quantity, 0) AS Inventory
FROM Product;

Salida de tabla actualizada:

identificación Cantidad
1 200
2 13
3 0
4 30
5 512

Utilice la función NVL() en la base de datos SQLite

Similar a la función COALESCE(), la función NVL() hace lo mismo. Comprueba los valores vacíos dentro de la base de datos y los reemplaza con un valor alternativo como se especifica en la función NVL().

La diferencia es que la función isnull() ha sido reemplazada por la función NVL(), una función de Oracle en el servidor SQL.

Diferencia entre las funciones COALESCE() y ifnull()

La principal diferencia entre las funciones COALESCE() y ifnull() es que la función ifnull() toma solo dos argumentos. Comprueba si el primer argumento es NULL o no, y si es NULL, lo reemplaza por el segundo argumento.

Por el contrario, la función COALESCE() toma dos o más parámetros y comprueba si el primer argumento es NULL. Si el primer argumento es NULL, comprueba el segundo.

Si el segundo argumento es NULL, sigue comprobando el siguiente argumento hasta que encuentra un valor no vacío y lo reemplaza con el primer argumento NULL.

SELECT IFNULL('any value', 'extra value');
SELECT IFNULL(NULL,'extra value');

SELECT COALESCE(NULL, 'extra value');
SELECT COALESCE(NULL, 'any value', 'extra value');
SELECT COALESCE(NULL, NULL, NULL, NULL, 'the non-null value');

Producción :

any value
extra value
extra value
some value
the non-null value

Diferencia entre las funciones COALESCE() y isnull()

Principalmente, ambas funciones realizan la misma funcionalidad, verificando los valores NULL y reemplazándolos con el valor no vacío especificado. Sin embargo, tienen una diferencia en su comportamiento.

  1. La diferencia es que la función isnull() evalúa solo una vez, pero la función COALESCE() evalúa varias veces.
  2. Otra diferencia es que al determinar el tipo de datos, la función isnull() usa el tipo de datos del primer argumento, mientras que la función COALESCE() usa la regla de expresión CASE y toma el tipo de datos de mayor prioridad. .
  3. La última diferencia es que la función isnull() nunca devuelve un valor NULL, y siempre asumimos que el resultado de esta función no admite valores NULL. Mientras que la función COALESCE() puede devolver la expresión NULL.

Ejemplo 1:

CREATE TABLE example
(
  column1 INTEGER NULL,
  column2 AS COALESCE(column1, 0) PRIMARY KEY,
  column3 AS ISNULL(column1, 0)
);

Producción :

# the statement fails as the nullability of the COALESCE function evaluates to NULL

Error: PRIMARY KEY cannot accept NULL values

Ejemplo 2:

CREATE TABLE example
(
  column1 INTEGER NULL,
  column2 AS COALESCE(column1, 0),
  column3 AS ISNULL(col1umn, 0) PRIMARY KEY
);

Producción :

# the above statement works as the nullability of the ISNULL function evaluates as NOT NULL.

No error
Junaid Khan avatar Junaid Khan avatar

Hi, I'm Junaid. I am a freelance software developer and a content writer. For the last 3 years, I have been working and coding with Python. Additionally, I have a huge interest in developing native and hybrid mobile applications.

LinkedIn