SQLite
 sql >> Baza danych >  >> RDS >> SQLite

Jak Coalesce() działa w SQLite

W SQLite funkcja coalesce() funkcja zwraca kopię swojego pierwszego argumentu innego niż NULL lub NULL, jeśli wszystkie argumenty są NULL.

Jest podobny do ifnull() funkcja, z wyjątkiem tego, że coalesce() akceptuje więcej niż dwa argumenty (ifnull() akceptuje tylko dwa argumenty).

Składnia

Składnia wygląda tak:

coalesce(X,Y,...)

Oznacza to, że możesz podać dwa lub więcej argumentów. Funkcja zwróci wtedy pierwszy, który nie jest NULL.

Przykład

Oto przykład do zademonstrowania.

SELECT coalesce(NULL,1);

Wynik:

1

Tutaj podałem dwa argumenty i coalesce() zwrócił pierwszą wartość inną niż NULL, która w tym przypadku wynosi 1 .

Więcej przykładów

Oto więcej odmian, które pokazują, jak coalesce() obsługuje każdy przypadek.

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

Wynik:

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

Więc to jest bardzo proste. Po prostu zwraca pierwszy argument, który nie jest NULL, niezależnie od liczby podanych argumentów.

Zauważ też, że jeśli wszystkie argumenty są NULL, to zwraca NULL.

Przykład bazy danych

Oto przykład użycia coalesce() funkcja w zapytaniu do bazy danych.

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

Wynik:

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

Oto jak to wygląda bez użycia coalesce() funkcja:

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

Wynik:

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

Więc coalesce() funkcja może być przydatna do zwracania znaczącego ciągu zamiast NULL.

Z trzema argumentami

Oto przykład dodania trzeciego argumentu. To pozwala nam przejrzeć wiele opcji przed dotarciem do NULL.

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

Wynik:

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

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. w SQLite

  2. Jaki jest limit zmiennych SQL, które można określić w pojedynczym zapytaniu execSQL?

  3. Ustaw domyślną wartość kolumny liczb całkowitych SQLite

  4. Pokój Android + funkcje okna

  5. Android Sqlite onupgrade usuwa tabelę z bazy danych