| Termin | Definicja |
|---|---|
| COALESCE | COALESCE to funkcja Transact-SQL zwracająca pierwszą niepustą wartość z podanej listy argumentów. COALESCE — czym jest i do czego służy w SQLCOALESCE jest wyrażeniem języka SQL używanym wtedy, gdy jedna kolumna, zmienna albo wartość obliczona może zawierać NULL. W praktyce pozwala wskazać kilka możliwych źródeł danych i wybrać tę wartość, która jako pierwsza nie jest oznaczona jako brak danych. Dzięki temu wynik zapytania może być czytelniejszy, a aplikacja nie musi samodzielnie rozstrzygać każdego przypadku pustego pola. Warto pamiętać, że NULL nie oznacza zwykłego pustego tekstu, zera ani wartości FALSE. Jest informacją, że wartość nie istnieje, nie została ustalona albo nie ma zastosowania. Funkcja COALESCE reaguje właśnie na NULL. Jeżeli kolumna tekstowa zawiera pusty łańcuch znaków, taki zapis nie musi zostać potraktowany jako brak wartości. Podobnie liczba 0 pozostaje poprawną liczbą, a data nie staje się NULL tylko dlatego, że jest wcześniejsza lub późniejsza od oczekiwanej. Najprostszy przykład wygląda następująco:
Jeżeli telefon prywatny ma wartość, zostanie użyty właśnie on. Gdy znajduje się tam NULL, sprawdzony zostanie telefon służbowy. Jeśli oba pola nie zawierają danych, zapytanie zwróci przygotowany tekst zastępczy. Taki sposób zapisu jest szczególnie przydatny przy raportach, zestawieniach i widokach, w których niepożądane jest wyświetlanie surowego NULL. COALESCE w kontekście technicznym i porównanie z innymi konstrukcjamiCOALESCE przyjmuje dwa lub większą liczbę argumentów i analizuje je od lewej do prawej. Kolejność ma znaczenie, ponieważ wynik zależy od priorytetu nadanego poszczególnym źródłom. Pierwszy argument może być wartością podstawową, drugi kopią zapasową, a następne kolejnymi wariantami. Z tego powodu dobrze jest układać listę od danych najbardziej pożądanych do najmniej preferowanych. W Transact-SQL COALESCE jest powiązane z konstrukcją CASE. Zapis:
można rozumieć podobnie jak warunkową logikę sprawdzającą kolejne wyrażenia pod kątem NULL. Różnica polega na tym, że COALESCE jest krótsze i zwykle łatwiejsze do odczytania, gdy sprawdzanych jest kilka pól. Konstrukcja CASE pozostaje bardziej elastyczna, ponieważ pozwala badać dowolne warunki, na przykład zakres liczbowy, status rekordu lub relację między kolumnami. Warto odróżnić COALESCE od ISNULL. ISNULL w Transact-SQL przyjmuje dwa argumenty i zwraca drugi, gdy pierwszy ma wartość NULL. COALESCE może przyjąć dłuższą listę wartości i jest zapisem opartym na standardowej składni SQL. Różnice mogą dotyczyć także ustalania typu danych oraz długości tekstu wynikowego. Przy mieszaniu typów, takich jak tekst, liczby i daty, system może próbować wykonać niejawną konwersję. Jeżeli typy nie są zgodne, zapytanie może zakończyć się błędem albo zwrócić rezultat inny od oczekiwanego. Przykładowo zapis COALESCE a typowe problemy w zapytaniachJednym z częstych zastosowań COALESCE jest przygotowanie kolumny opisowej z kilku pól. W bazie może istnieć osobne pole nazwy firmy, nazwy działu i nazwy osoby kontaktowej. Raport może potrzebować jednego oznaczenia, które zostanie zbudowane według określonego priorytetu:
Nie należy jednak zakładać, że funkcja usunie wszystkie puste wyniki. Jeżeli nazwa_firmy ma pusty tekst, COALESCE może uznać go za istniejącą wartość i nie przejść do kolejnego argumentu. W razie potrzeby trzeba osobno obsłużyć pusty łańcuch, na przykład przez NULLIF:
W takim zapisie pusty tekst zostaje potraktowany jak NULL, a wybór może przejść do następnego pola. Przy danych zawierających spacje pomocne może być wcześniejsze oczyszczenie tekstu funkcją TRIM, zależnie od wersji używanego silnika i przyjętych zasad przetwarzania. Inny problem pojawia się przy obliczeniach. Wyrażenie
Takie rozwiązanie jest poprawne tylko wtedy, gdy brak ceny lub brak liczby sztuk rzeczywiście powinien oznaczać zero. W niektórych systemach NULL oznacza błąd importu albo niekompletne dane, więc zastąpienie go zerem może ukryć problem. W raporcie finansowym lub magazynowym warto najpierw ustalić znaczenie pola, a dopiero potem wprowadzać wartość domyślną. Ostrożność jest też potrzebna w warunkach WHERE. Warunek COALESCE — praktyczne wskazówki dotyczące wydajności i czytelnościNajlepsze efekty daje stosowanie COALESCE w miejscach, w których zastępowanie NULL jest elementem prezentacji albo jasno określonej reguły biznesowej. W zapytaniach raportowych funkcja może poprawić odbiór danych, ponieważ zamiast pustych komórek pojawia się opis informujący o braku wartości. W warstwie aplikacji może z kolei ograniczyć liczbę dodatkowych instrukcji warunkowych. Nie należy jednak owijać funkcją kolumny używanej w filtrze bez sprawdzenia planu wykonania. Przykład:
jest czytelny, lecz zastosowanie funkcji bezpośrednio na kolumnach może utrudniać wykorzystanie indeksu. W zależności od struktury tabeli korzystniejsze może być rozpisanie logiki na warunki z OR albo przygotowanie odpowiedniej kolumny obliczanej i indeksu. Nie ma jednej reguły pasującej do każdego przypadku, dlatego przy dużych tabelach warto porównać plan zapytania oraz czas wykonania. Warto też unikać bardzo długich list argumentów, jeżeli ich znaczenie nie jest oczywiste. Gdy COALESCE łączy wiele pól o niejasnym priorytecie, kod staje się trudniejszy w utrzymaniu. Pomocne bywa nadanie kolumnom opisowych aliasów, dodanie komentarza w kodzie albo rozdzielenie obliczenia na kilka etapów. Jeśli wartości pochodzą z różnych tabel, należy dodatkowo sprawdzić działanie złączeń. Błędne JOIN może powodować zwielokrotnienie rekordów, a COALESCE jedynie zamaskuje brak danych w pojedynczej kolumnie, nie naprawiając samego złączenia. Przed użyciem wartości zastępczej trzeba odpowiedzieć na trzy pytania: co oznacza NULL w tym konkretnym polu, czy wartość domyślna ma sens biznesowy oraz czy zamiana nie utrudni wykrycia błędnych rekordów. Dobre zapytanie nie tylko usuwa pusty wynik, lecz także zachowuje informację potrzebną do dalszej kontroli. Czasami lepszym rozwiązaniem jest pozostawienie NULL i dodanie osobnej kolumny z komunikatem o niekompletności danych. COALESCE — kiedy zgłosić się do serwisu komputerowegoProblemy z działaniem zapytań wykorzystujących COALESCE mogą wynikać nie tylko z samej składni. Przyczyną bywa niezgodny typ danych, uszkodzona instalacja systemu bazodanowego, błędna konfiguracja środowiska, problemy z dyskiem albo niedostateczna wydajność komputera podczas pracy z dużymi tabelami. Zgłoszenie warto rozważyć, gdy zapytanie zwraca nieoczekiwane konwersje, aplikacja przerywa pracę przy odczycie danych, raporty działają wyraźnie wolniej niż wcześniej lub pojawiają się komunikaty o błędach niezwiązane jednoznacznie z treścią zapytania. Przed przekazaniem sprzętu do sprawdzenia dobrze jest zapisać dokładną treść zapytania, komunikat błędu, nazwę używanego systemu bazodanowego oraz informację, od kiedy występuje problem. Przydatne może być również wskazanie, czy błąd pojawia się tylko dla jednej tabeli, konkretnego użytkownika lub określonego zestawu danych. Takie informacje ułatwiają odróżnienie problemu z logiką SQL od usterki systemowej. W Warszawie pomocą w sprawdzeniu komputera i środowiska pracy zajmuje się Serwis laptopów i komputerów PC - Warszawa. W ramach obsługi stosowana jest gwarancja do 12 miesięcy, co może być istotne przy zleceniu obejmującym naprawę sprzętu używanego do pracy z bazami danych. Przed rozpoczęciem czynności warto przekazać kopię komunikatu, opisać oczekiwany rezultat oraz zaznaczyć, czy dane znajdujące się na nośniku mają pozostać nienaruszone. |