sql >> Databáze >  >> RDS >> SQLite

Jak Coalesce() funguje v SQLite

V SQLite, coalesce() funkce vrací kopii svého prvního argumentu, který není NULL, nebo NULL, pokud jsou všechny argumenty NULL.

Je to podobné jako ifnull() funkce, kromě toho coalesce() přijímá více než dva argumenty (ifnull() přijímá pouze dva argumenty).

Syntaxe

Syntaxe vypadá takto:

coalesce(X,Y,...)

To znamená, že můžete poskytnout dva nebo více argumentů. Funkce pak vrátí první, která není NULL.

Příklad

Zde je příklad k demonstraci.

SELECT coalesce(NULL,1);

Výsledek:

1

Zde jsem uvedl dva argumenty a coalesce() vrátil první hodnotu jinou než NULL, což je v tomto případě 1 .

Další příklady

Zde jsou další varianty, které demonstrují, jak se coalesce() řeší každý případ.

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

Výsledek:

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) = 

Takže je to velmi přímočaré. Jednoduše vrátí první argument, který není NULL, bez ohledu na to, kolik argumentů je poskytnuto.

Všimněte si také, že pokud jsou všechny argumenty NULL, vrátí NULL.

Příklad databáze

Zde je příklad použití coalesce() funkce v databázovém dotazu.

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

Výsledek:

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

Zde je návod, jak to vypadá bez použití coalesce() funkce:

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

Výsledek:

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

Takže coalesce() funkce může být užitečná pro vrácení smysluplného řetězce namísto NULL.

Se třemi argumenty

Zde je příklad přidání třetího argumentu. To nám umožňuje projít několik možností, než dojdeme k NULL.

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

Výsledek:

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

  1. SELECT nebo PERFORM ve funkci PL/pgSQL

  2. Jaký je rozdíl mezi BIT a TINYINT v MySQL?

  3. uložit seznam<třída modelu> do sqlite

  4. Jak můžete v SQL seskupit podle rozsahů?