
Jeśli kiedykolwiek pracowałeś z bazami danych, na pewno spotkałeś się z problemem wartości NULL. W SQL istnieje wiele sposobów ich obsługi, ale jednym z najbardziej użytecznych i elastycznych jest funkcja COALESCE. W tym artykule pokażę, jak działa COALESCE w języku SQL, podam praktyczne przykłady zastosowania i wyjaśnię, dlaczego warto z niej korzystać.
Co to jest COALESCE?
COALESCE to funkcja SQL, która zwraca pierwszy niewartościowy NULL argument z listy. Oznacza to, że otrzymujemy pierwszą rzeczywistą wartość spośród dostarczonych kolumn lub literałów.
Składnia funkcji wygląda następująco:
COALESCE(wartość1, wartość2, ..., wartośćN)
Gdy SQL przetwarza kod, zaczyna od pierwszej wartości z listy i jeśli nie jest ona NULL, to ją zwraca. Jeśli jest NULL, przechodzi do kolejnej, aż znajdzie pierwszą rzeczywistą wartość. Jeśli wszystkie wartości są NULL, funkcja również zwraca NULL.
Podstawowe zastosowanie COALESCE
Najczęstsze zastosowanie COALESCE to zastępowanie wartości NULL jakąś domyślną wartością. Zobaczmy prosty przykład:
SELECT COALESCE(NULL, 'Domyślna wartość', 'Inna wartość') AS wynik;
Rezultat:
| wynik |
|---|
| Domyślna wartość |
SQL sprawdza wartości po kolei – pierwsza to NULL, więc idzie dalej i zwraca 'Domyślna wartość’.
COALESCE w praktyce – przykłady z tabel
Załóżmy, że mamy tabelę uzytkownicy:
CREATE TABLE uzytkownicy (
id INT PRIMARY KEY,
imie VARCHAR(50),
nazwisko VARCHAR(50),
pseudonim VARCHAR(50)
);
INSERT INTO uzytkownicy (id, imie, nazwisko, pseudonim) VALUES
(1, 'Jan', 'Kowalski', NULL),
(2, NULL, 'Nowak', 'Nowak123'),
(3, 'Anna', NULL, NULL),
(4, NULL, NULL, NULL);
Teraz chcemy wybrać imię użytkownika, ale jeśli jest ono NULL, to nazwisko, a jeśli to też jest NULL, to pseudonim:
SELECT id, COALESCE(imie, nazwisko, pseudonim, 'Brak danych') AS identyfikacja FROM uzytkownicy;
Wynik:
| id | identyfikacja |
|---|---|
| 1 | Jan |
| 2 | Nowak |
| 3 | Anna |
| 4 | Brak danych |
Jak widać, jeśli imie jest NULL, SQL bierze nazwisko, jeśli i ono jest NULL, próbuje pseudonim, a gdy i to zawiedzie – zwraca tekst „Brak danych”.
Porównanie COALESCE z ISNULL i CASE
W SQL istnieją także inne sposoby obsługi wartości NULL. Oto porównanie:
ISNULL()– dostępne w MS SQL Server i zwraca zawsze dwie wartości: jeśli pierwsza jestNULL, zamienia ją na drugą.CASE WHEN– bardziej skomplikowana, wymaga napisania osobnej logiki warunkowej.COALESCE()– elastyczna, działa z dowolną liczbą argumentów.
Oto porównanie w działaniu:
SELECT
COALESCE(NULL, 'A', 'B') AS coalesce_wynik,
ISNULL(NULL, 'A') AS isnull_wynik,
CASE WHEN NULL IS NOT NULL THEN 'A' ELSE 'B' END AS case_wynik;
Wynik:
| coalesce_wynik | isnull_wynik | case_wynik |
|---|---|---|
| A | A | B |
Główna różnica między COALESCE a ISNULL to obsługa wielu argumentów – COALESCE pozwala ich podać więcej niż dwa.
Wydajność COALESCE
Zastanawiasz się, czy COALESCE wpływa na wydajność zapytań? W większości przypadków różnice są minimalne, ale warto pamiętać o kilku aspektach:
- Jeśli używasz
COALESCEw warunkuWHERE, indeksy na kolumnach mogą nie działać tak efektywnie. - W bazach takich jak PostgreSQL czy MySQL
COALESCEjest dobrze zoptymalizowane i szybko zwraca wyniki. - Łączenie
COALESCEz innymi funkcjami (np.CONCAT) może powodować większe obciążenie.
Podsumowanie
COALESCE to potężna funkcja SQL, która pomaga w obsłudze wartości NULL w prosty i czytelny sposób. Dzięki niej można zastępować brakujące dane wartościami domyślnymi, łączyć różne źródła informacji i zwiększać czytelność zapytań.
Najważniejsze zalety COALESCE:
- Obsługuje dowolną liczbę argumentów.
- Jest dostępna w większości silników SQL.
- Poprawia czytelność kodu SQL.
- Zwiększa kontrolę nad wartościami
NULL.
Jeśli jeszcze nie korzystałeś z COALESCE, warto się z nią zaprzyjaźnić – to jedno z tych narzędzi, które naprawdę ułatwiają życie każdego użytkownika SQL.
Inny ciekawy artykuł:
Jak działa CASE WHEN w języku SQL? Przykłady zastosowania
Opanuj SQL z moim kursem!
Poznasz zarówno podstawy, jak i zaawansowane zapytania analityczne (CTE, subqueries, window functions). Nauczysz się pracować na różnych silnikach – na kursie pracujemy zarówno na MySQL, jak i na Postgres. Wszystko zainstalujemy na Twoim komputerze, plus dostaniesz mnóstwo zestawów danych do ćwiczeń.
Zostań analitykiem danych – dołącz do KajoDataSpace!
Najlepsza ścieżka do zawodu analityka danych. Dostęp do pełnych wersji kursów online z Excela, SQLa, PowerBI, Tableau i Pythona z certyfikatami!
🟨 Ekskluzywana ale pomagająca sobie społeczność.
🟩 Ponad 75 godzin materiałów video.
🟨 Spotkania LIVE co miesiąc.
🟩 Mój osobisty mentoring.

