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

Cómo funciona Coalesce() en SQLite

En SQLite, coalesce() La función devuelve una copia de su primer argumento que no es NULL, o NULL si todos los argumentos son NULL.

Es similar al ifnull() función, excepto que coalesce() acepta más de dos argumentos (ifnull() solo acepta dos argumentos).

Sintaxis

La sintaxis es así:

coalesce(X,Y,...)

Lo que esto significa es que puede proporcionar dos o más argumentos. La función devolverá el primero que no sea NULL.

Ejemplo

Aquí hay un ejemplo para demostrarlo.

SELECT coalesce(NULL,1);

Resultado:

1

Aquí proporcioné dos argumentos y coalesce() devolvió el primer valor no NULL, que en este caso es 1 .

Más ejemplos

Aquí hay más variaciones para demostrar cómo coalesce() maneja cada caso.

.mode line
SELECT
  coalesce(NULL,NULL,1,2,3),
  coalesce(1,NULL,2,3),
  coalesce(NULL,3,2,1),
  coalesce(1,2,3,NULL),
  coalesce(NULL,NULL);

Resultado:

coalesce(NULL,NULL,1,2,3) = 1
     coalesce(1,NULL,2,3) = 1
     coalesce(NULL,3,2,1) = 3
     coalesce(1,2,3,NULL) = 1
      coalesce(NULL,NULL) = 

Así que es muy sencillo. Simplemente devuelve el primer argumento que no es NULL, independientemente de cuántos argumentos se proporcionen.

También observe que si todos los argumentos son NULL, entonces devuelve NULL.

Ejemplo de base de datos

Aquí hay un ejemplo del uso de coalesce() función en una consulta de base de datos.

.mode column
SELECT 
  CustomerId, 
  coalesce(Fax, 'N/A') AS Fax
FROM Customer
LIMIT 5;

Resultado:

CustomerId  Fax          
----------  -------------
1           +55 (12) 3923
2           N/A          
3           N/A          
4           N/A          
5           +420 2 4172 5

Así es como se ve sin usar coalesce() función:

.mode column
SELECT 
  CustomerId, 
  Fax
FROM Customer
LIMIT 5;

Resultado:

CustomerId  Fax               
----------  ------------------
1           +55 (12) 3923-5566
2                             
3                             
4                             
5           +420 2 4172 5555  

Así que coalesce() La función puede ser útil para devolver una cadena significativa en lugar de NULL.

Con tres argumentos

Aquí hay un ejemplo de cómo agregar un tercer argumento. Esto nos permite ejecutar múltiples opciones antes de llegar a NULL.

SELECT 
  CustomerId, 
  coalesce(Fax, Email, 'N/A') AS "Fax/Email"
FROM Customer
LIMIT 5;

Resultado:

CustomerId  Fax/Email             
----------  ----------------------
1           +55 (12) 3923-5566    
2           [email protected] 
3           [email protected]   
4           [email protected] 
5           +420 2 4172 5555