SQLite
 sql >> база данни >  >> RDS >> SQLite

Как работи Coalesce() в SQLite

В SQLite coalesce() функцията връща копие на първия си аргумент, различен от NULL, или NULL, ако всички аргументи са NULL.

Това е подобно на ifnull() функция, с изключение на coalesce() приема повече от два аргумента (ifnull() приема само два аргумента).

Синтаксис

Синтаксисът е така:

coalesce(X,Y,...)

Това означава, че можете да предоставите два или повече аргумента. След това функцията ще върне първия, който не е NULL.

Пример

Ето пример за демонстрация.

SELECT coalesce(NULL,1);

Резултат:

1

Тук предоставих два аргумента и coalesce() върна първата стойност, различна от NULL, която в този случай е 1 .

Още примери

Ето още варианти, за да демонстрирате как coalesce() обработва всеки случай.

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

Резултат:

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

Така че е много просто. Той просто връща първия аргумент, който не е NULL, независимо колко аргумента са предоставени.

Също така забележете, че ако всички аргументи са NULL, тогава той връща NULL.

Пример за база данни

Ето пример за използване на coalesce() функция в заявка за база данни.

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

Резултат:

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

Ето как изглежда без да използвате coalesce() функция:

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

Резултат:

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

Така че coalesce() функцията може да бъде полезна за връщане на смислен низ вместо NULL.

С три аргумента

Ето пример за добавяне на трети аргумент. Това ни позволява да преминем през множество опции, преди да стигнем до NULL.

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

Резултат:

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. Android SQLite:Как да генерирам голяма таблица с цел тестване?

  2. SQLite MAX

  3. Показване на резултатите от заявката на SQLite с помощта на вертикален изход

  4. Как работи SQLite Random().

  5. Грешка на SQLiteConstraintException се показва след стартиране на всяка дейност