Serwisanci dostępni teraz · czynne całą dobę, także w weekendy i świętaWarszawa i okolice · dojazd bezpłatny
Darmowa diagnoza laptopa
Darmowa diagnoza laptopa
Dojazd do klienta bezpłatnie
Dojazd do klienta bezpłatnie
Laptopy zastępcze bezpłatnie
Laptopy zastępcze bezpłatnie
Odbiór i zwrot sprzętu bezpłatnie
Odbiór i zwrot sprzętu bezpłatnie

Funkcja COALESCE

Termin Definicja
Funkcja COALESCE

Funkcja COALESCE zwraca pierwszą niepustą wartość z podanej listy argumentów.

Jak działa ta funkcja w zapytaniu

COALESCE przyjmuje dowolną liczbę argumentów i zwraca pierwszy z nich, który nie jest wartością pustą NULL. Jeżeli wszystkie są puste, wynikiem także jest NULL. Funkcja należy do standardu języka SQL, więc działa w Microsoft SQL Server, PostgreSQL, Oracle, MySQL i pozostałych silnikach, co odróżnia ją od rozwiązań firmowych, takich jak ISNULL w SQL Server czy NVL w Oracle, przyjmujących tylko dwa argumenty. Typowe zastosowanie to podstawianie wartości zastępczej w raporcie, żeby zamiast pustej komórki pojawił się zero albo myślnik, oraz sklejanie danych z kilku kolumn, na przykład telefonu komórkowego, stacjonarnego i służbowego w jedno pole kontaktu.

Porównanie z ISNULL i z instrukcją CASE

Różnice wykraczają poza liczbę argumentów. COALESCE jest wewnętrznie rozwijane do wyrażenia CASE, więc dziedziczy jego zasady ustalania typu wyniku: silnik wybiera typ o najwyższym priorytecie spośród argumentów. ISNULL w SQL Server działa inaczej, przyjmując typ pierwszego argumentu, co przy łączeniu kolumny tekstowej o krótkiej długości ze stałą tekstową potrafi po cichu obciąć wynik. Kolejna różnica dotyczy wartości wynikowej pod kątem dopuszczalności NULL w kolumnach wyliczanych. Instrukcja CASE pozostaje najbardziej elastyczna, bo pozwala nie tylko sprawdzić pustkę, ale i dowolny inny warunek, jednak przy prostym podstawianiu wartości domyślnej COALESCE czyta się lepiej.

Pułapki wydajnościowe i logiczne

Pierwsza dotyczy podzapytań: jeżeli argumentami są zapytania do innych tabel, silnik potrafi wykonać je wielokrotnie, bo rozwinięcie do CASE powiela wyrażenie. Przy kosztownym podzapytaniu daje to zaskakująco długi czas wykonania. Druga to użycie funkcji na kolumnie w warunku WHERE, co uniemożliwia wykorzystanie indeksu i zamienia szybkie wyszukiwanie w przegląd całej tabeli. Trzecia jest natury logicznej: pusta wartość NULL to nie to samo co pusty ciąg znaków ani co zero, więc kolumna wypełniona spacjami nie zostanie przez tę funkcję potraktowana jako brak danych. Czwarta dotyczy mieszania typów, bo zestawienie kolumny liczbowej z tekstową kończy się błędem konwersji dopiero na tych wierszach, w których pierwszy argument okaże się pusty, co bywa trudne do wychwycenia w testach.

Gdy raport zwalnia z powodu maszyny, nie zapytania

Zanim zacznie się przepisywać zapytania, warto wykluczyć sprzęt. Wolny dysk z błędami odczytu, brak pamięci i przegrzewający się procesor potrafią wydłużyć raport bardziej niż nieoptymalny kod. Sprawdzamy komputery i serwery firm w Warszawie, wymieniamy nośniki, rozbudowujemy pamięć i porządkujemy chłodzenie. Obsługujemy klientów firmowych i indywidualnych o każdej porze dnia i nocy.

+48 22 100 48 29Zadzwoń teraz · serwisant w 1 godzinę