sql >> Base de Datos >  >> RDS >> SQLite

Cómo funciona SQLite Ifnull()

El ifnull() de SQLite La función le permite reemplazar valores NULL con otro valor.

Toma dos argumentos y devuelve una copia de su primer argumento no NULL, o NULL si ambos argumentos son NULL.

El ifnull() la función es equivalente a coalesce() con dos argumentos.

Ejemplo sencillo

Aquí hay un ejemplo simple para demostrar el concepto.

SELECT 
  ifnull(123, 0),
  ifnull(NULL, 0);

Resultado:

ifnull(123, 0)  ifnull(NULL, 0)
--------------  ---------------
123             0              

La segunda columna era NULL y entonces 0 fue devuelto en su lugar.

Ejemplo de base de datos

Este ejemplo usa ifnull() en una consulta de base de datos. Esto demuestra cómo ifnull() puede ser útil cuando se consultan datos que pueden contener valores NULL.

Tome la siguiente tabla como ejemplo:

ProductId   ProductName    Price     
----------  -------------  ----------
1           Widget Holder  139.5     
2           Widget Stick   89.75     
3           Foo Cap        11.99     
4           Free Widget    0.0       
5           Free Foobar    0.0       
6           Free Beer                

La mayoría de los productos se han rellenado con precios, pero el precio de Cerveza gratis es NULL.

Podemos cambiar esto a un valor de nuestra elección.

SELECT 
  ProductName,
  ifnull(Price, 0.0)
FROM Products;

Resultado:

ProductName    ifnull(Price, 0.0)
-------------  ------------------
Widget Holder  139.5             
Widget Stick   89.75             
Foo Cap        11.99             
Free Widget    0.0               
Free Foobar    0.0               
Free Beer      0.0               

Ahora tiene el mismo precio que los demás productos gratuitos.

El valor de reemplazo no necesariamente tiene que ser un número. También puede reemplazarlo con una cadena.

SELECT 
  ProductName,
  ifnull(Price, 'FREE!')
FROM Products;

Resultado:

ProductName    ifnull(Price, 'FREE!')
-------------  ----------------------
Widget Holder  139.5                 
Widget Stick   89.75                 
Foo Cap        11.99                 
Free Widget    0.0                   
Free Foobar    0.0                   
Free Beer      FREE!                 

Cuando ambos argumentos son NULL

Si ambos argumentos son NULL, se devuelve NULL.

SELECT ifnull(NULL, NULL);

Resultado:

ifnull(NULL, NULL)
------------------