| Termin | Definicja |
|---|---|
| Zgodność typów w UNION | Zgodność typów w UNION jest wymagana — kolumny łączonych zapytań muszą mieć porównywalne typy danych. Na czym polega zgodność typów w UNIONOperator Zgodność nie oznacza, że typy muszą być zapisane identycznie w definicji tabeli. Liczba całkowita może zostać połączona z innym typem liczbowym, jeśli używany silnik potrafi zastosować reguły konwersji. Podobnie typy tekstowe o różnych długościach często mogą wystąpić w jednej kolumnie wyniku. Problem pojawia się wtedy, gdy wartości mają nieporównywalne znaczenie lub gdy automatyczna konwersja nie jest możliwa, na przykład przy próbie połączenia wartości daty z nieprzekształconym typem logicznym albo z tekstem zawierającym niepoprawne dane. Typowe błędy w łączonych zapytaniachNajprostszym błędem jest różna liczba kolumn. Zapytanie Druga grupa problemów dotyczy typów na tej samej pozycji. Przykładowo pierwsze zapytanie może zwracać identyfikator jako liczbę, a drugie jako tekst. Czasem silnik wykona niejawną konwersję, ale jej wynik zależy od reguł danego systemu, ustawień oraz zawartości danych. Wartość tekstowa Jawne konwersje i wpływ UNION na wynikGdy typy nie są jednoznacznie zgodne, należy użyć jawnego rzutowania wartości do wspólnego typu. W zależności od silnika SQL stosuje się do tego funkcje lub składnię takie jak Trzeba pamiętać, że typ końcowej kolumny wyniku jest ustalany na podstawie reguł danego silnika, zwykle z uwzględnieniem priorytetu typów, ich długości, precyzji i skali. Ma to znaczenie dla liczb dziesiętnych, tekstów oraz dat. Połączenie kolumn tekstowych o różnych długościach może doprowadzić do wybrania określonej długości wyniku, a połączenie typów liczbowych o różnej precyzji może zmienić sposób przechowywania części ułamkowej. Jeśli wynik ma być używany przez aplikację, raport albo eksport do pliku, typy należy sprawdzić również na granicy programu, ponieważ sterownik może mapować je na inne typy języka programowania.
Diagnostyka problemu w praktycznym zapytaniuPodczas diagnozowania błędu należy najpierw rozpisać kolumny wszystkich gałęzi operatora w tej samej kolejności. Dla każdej pozycji trzeba sprawdzić typ źródłowy, możliwość konwersji, długość tekstu, precyzję liczby oraz sposób obsługi wartości Przykładowa bezpieczna struktura może sprowadzać identyfikator do wspólnego typu tekstowego, nazwę do ustalonego typu znakowego, a brakującą wartość ceny zastępować typowanym Po poprawieniu typów należy przetestować zapytanie na danych rzeczywistych, w tym na pustych wartościach, dużych liczbach, długich tekstach, niepoprawnych datach oraz rekordach powtarzających się w obu źródłach. Sam fakt, że zapytanie się kompiluje, nie potwierdza poprawności przepływu danych. Trzeba jeszcze sprawdzić, czy wartości nie są obcinane, zaokrąglane albo zmieniane podczas konwersji oraz czy zastosowanie |