Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Objaśnienie MySQL COALESCE()

W MySQL funkcja COALESCE() operator zwraca pierwszą wartość inną niż NULL na liście lub NULL, jeśli nie ma wartości innych niż NULL.

Składnia

Składnia wygląda tak:

COALESCE(value,...)

Przykład

Oto prosty przykład do zademonstrowania:

SELECT COALESCE(null, 'Fish', 'Rabbit');

Wynik:

Fish

W tym przypadku Fish była pierwszą wartością inną niż NULL, więc COALESCE() zwrócił tę wartość.

Rabbit była również wartością inną niż NULL, ale pojawiła się po Fish więc nie został zwrócony.

Gdy wszystkie wartości są NULL

Jeśli wszystkie wartości są NULL , COALESCE() zwraca NULL :

SELECT COALESCE( null, null );

Wynik:

NULL

Wyrażenia

COALESCE() zwraca bieżącą wartość pierwszego wyrażenia, które początkowo nie ma wartości NULL . Dlatego jeśli przekażemy takie wyrażenie:

SELECT COALESCE( null, 2 * 10 );

Otrzymujemy to:

20

Przykład bazy danych

Załóżmy, że uruchamiamy następujące zapytanie:

SELECT
  PetName,
  PetType
FROM Pets;

I otrzymujemy następujący wynik:

PetName	PetType
------- -------
Meow	Cat
Woof	Dog
Tweet	Bird
Awk	NULL
Moo	Cow
Omph	NULL

Widzimy, że dwa wiersze mają wartości NULL w kolumnie DOB.

Gdybyśmy chcieli zastąpić NULL z inną wartością, możemy zmienić zapytanie w następujący sposób:

SELECT
  PetName,
  COALESCE(PetType, 'Unknown') AS "PetType"
FROM Pets;

Wynik:

PetName	PetType
------- -------
Meow	Cat
Woof	Dog
Tweet	Bird
Awk	Unknown
Moo	Cow
Omph	Unknown

W tym przypadku zastąpiliśmy wszystkie wartości NULL ciągiem Unknown .

Nie musi to być jednak sznurek. Oto kolejny przykład, w którym wartości NULL są zastępowane liczbą całkowitą:

SELECT 
  EmployeeName,
  Salary,
  COALESCE(Salary, 0) AS "Salary (adjusted)"
FROM Employees;

Wynik:

EmployeeName	Salary	Salary (adjusted)
--------------  ------  -----------------
Homer Einstein	NULL	0
Bart Hawking	100000	100000

Nieprawidłowa liczba argumentów

Używanie COALESCE() bez żadnych argumentów powoduje błąd:

SELECT COALESCE();

Wynik:

ERROR 1064 (42000) at line 1: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ')' at line 1

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

  2. Jak sprawdzić, czy wartość jest liczbą całkowitą w MySQL?

  3. Pobrać nazwy kolumn tabeli w MySQL?

  4. Jak uzyskać ostatni rekord w każdej grupie w MySQL?

  5. Jak użyć LOAD_FILE do załadowania pliku do obiektu BLOB MySQL?