sql >> Database teknologi >  >> RDS >> SQLite

Hvordan Coalesce() virker i SQLite

I SQLite er coalesce() funktion returnerer en kopi af dets første ikke-NULL-argument eller NULL, hvis alle argumenter er NULL.

Det ligner ifnull() funktion, bortset fra at coalesce() accepterer mere end to argumenter (ifnull() accepterer kun to argumenter).

Syntaks

Syntaksen ser sådan ud:

coalesce(X,Y,...) 

Det betyder, at du kan give to eller flere argumenter. Funktionen vil derefter returnere den første, der ikke er NULL.

Eksempel

Her er et eksempel til at demonstrere.

SELECT coalesce(NULL,1); 

Resultat:

1

Her har jeg givet to argumenter og coalesce() returnerede den første ikke-NULL-værdi, som i dette tilfælde er 1 .

Flere eksempler

Her er flere variationer for at demonstrere, hvordan coalesce() håndterer hver enkelt sag.

.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);

Resultat:

sammensmelte(NULL,NULL,1,2,3) =1 sammensmelte(1,NULL,2,3) =1 sammensmelte(NULL,3,2,1) =3 sammensmelte(1,2,3,NULL ) =1 samles(NULL,NULL) =

Så det er meget ligetil. Det returnerer simpelthen det første argument, der ikke er NULL, uanset hvor mange argumenter der er angivet.

Bemærk også, at hvis alle argumenter er NULL, så returnerer det NULL.

Databaseeksempel

Her er et eksempel på brug af coalesce() funktion i en databaseforespørgsel.

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

Resultat:

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

Sådan ser det ud uden at bruge coalesce() funktion:

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

Resultat:

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

coalesce() funktion kan være nyttig til at returnere en meningsfuld streng i stedet for NULL.

Med tre argumenter

Her er et eksempel på tilføjelse af et tredje argument. Dette giver os mulighed for at gennemgå flere muligheder, før vi ankommer til NULL.

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

Resultat:

CustomerId Fax/E-mail ---------- ----------------------1 +55 (12) 3923-5566 2 eksempel @sqldat.com 3 [email protected] 4 [email protected] 5 +420 2 4172 5555 

  1. Gem billede til database blob; hent fra db til Picturebox

  2. Tilføj en tidszoneforskydning til en datetime2-værdi i SQL Server (T-SQL)

  3. Der opstod en netværksrelateret eller instansspecifik fejl under oprettelse af en forbindelse til SQL Server

  4. Del 2:Billedklassificering med MariaDB Server og TensorFlow – en vejledning