| Termin | Definicja |
|---|---|
| Kolacja wyrażenia | Kolacja wyrażenia to ustawienie sortowania wynikające z reguł pierwszeństwa przy łączeniu wartości o różnych kolacjach. Kolacja wyrażenia w zapytaniach SQLKolacja wyrażenia to reguła określająca, w jaki sposób silnik bazy danych interpretuje i porównuje wartości tekstowe powstałe z wyrażenia. Obejmuje między innymi zestaw znaków, sposób sortowania oraz zasady porównywania wielkości liter i znaków diakrytycznych. Dzięki kolacji silnik wie, czy na przykład litery „a” i „ą” mają być traktowane jako różne podczas sortowania albo wyszukiwania. Wyrażeniem może być pojedyncza kolumna tekstowa, stała znakowa, parametr zapytania, wynik konkatenacji, wynik funkcji tekstowej albo warunek złożony z kilku operandów. Jeżeli elementy takiego wyrażenia mają różne kolacje, silnik musi ustalić jedną regułę obowiązującą dla całego działania. Ustawienie wybrane na tym etapie jest właśnie kolacją wyrażenia. Nie należy utożsamiać jej wyłącznie z ustawieniem kolumny, ponieważ wynik może zależeć również od literału, parametru, funkcji i jawnych modyfikatorów zastosowanych w zapytaniu. Jak powstaje reguła porównywania tekstuPodczas analizy zapytania silnik rozpoznaje kolacje przypisane poszczególnym składnikom wyrażenia. Następnie stosuje reguły pierwszeństwa przewidziane dla danego języka SQL i konkretnej implementacji. Znaczenie może mieć to, czy kolacja pochodzi bezpośrednio z kolumny, została odziedziczona z poziomu tabeli lub bazy, wynika z domyślnych ustawień sesji, czy została wskazana jawnie przy użyciu operatora lub konstrukcji obsługiwanej przez dany silnik. Jeżeli jedna kolacja ma wyższy priorytet, może zostać użyta do porównania całego wyrażenia. W innych przypadkach silnik może zgłosić konflikt niejawnych kolacji, ponieważ nie da się bezpiecznie wybrać jednej reguły. Taki konflikt jest szczególnie prawdopodobny przy łączeniu danych pochodzących z kolumn utworzonych z różnymi ustawieniami sortowania albo przy porównywaniu tekstu zapisanego w różnych zestawach znaków. Dokładny algorytm rozstrzygania zależy od silnika bazy danych, dlatego nie powinno się przenosić reguł pierwszeństwa z jednego systemu do drugiego. Wpływ kolacji na sortowanie i porównaniaKolacja wyrażenia wpływa na działanie operatorów porównania, sortowanie wyników, grupowanie wartości oraz operacje wyszukiwania tekstowego. Dwa napisy mogą zostać uznane za równe mimo różnic w wielkości liter, jeśli wybrana kolacja jest niewrażliwa na wielkość liter. Podobnie kolacja może określać, czy znaki diakrytyczne są uwzględniane jako istotna różnica. Z tego powodu wynik warunku równości albo sortowania może zmienić się po zmianie kolacji, nawet gdy same dane pozostają bez zmian. Kolacja dotyczy także wyrażeń tworzonych z kilku fragmentów tekstu. Połączenie kolumny z literałem lub wynikiem funkcji nie musi zachować kolacji intuicyjnie oczekiwanej przez autora zapytania. Wpływ może mieć również konwersja typu, ponieważ przekształcenie danych do innego typu tekstowego może zmienić sposób dziedziczenia ustawień. Przy analizie niejednoznacznego wyniku trzeba więc sprawdzić definicję kolumn, typy operandów, ustawienia połączenia oraz sposób, w jaki używany silnik rozwiązuje kolizję kolacji. Rozpoznawanie problemów z kolacją wyrażeniaObjawem nieprawidłowo dobranej kolacji może być komunikat o konflikcie kolacji, inna kolejność rekordów niż oczekiwana, brak dopasowania tekstu różniącego się znakami diakrytycznymi albo nieoczekiwane uznanie dwóch napisów za identyczne. Warto rozdzielić trzy kwestie: kodowanie znaków, kolację oraz typ danych. Kodowanie określa sposób zapisania znaków, natomiast kolacja określa sposób ich porównywania i porządkowania. Sama zmiana kolacji nie naprawi danych zapisanych z błędnym kodowaniem. Diagnostyka powinna rozpocząć się od ustalenia, z jakich elementów składa się wyrażenie i jakie ustawienia są przypisane każdemu z nich. Następnie należy sprawdzić dokumentację używanego silnika, ponieważ nazwy kolacji, dostępne warianty oraz reguły pierwszeństwa nie są uniwersalne. Jawne wymuszenie kolacji może usunąć konflikt, ale powinno być dobrane do znaczenia danych i stosowane konsekwentnie. W przeciwnym razie zapytanie zacznie zwracać wyniki poprawne tylko dla określonego fragmentu aplikacji, a inne operacje będą działały według odmiennych zasad. Warszawskie Pogotowie Komputerowe wykonuje profesjonalną naprawę laptopów, komputerów PC i podzespołów, a przy problemach z oprogramowaniem można rozpocząć diagnostykę od sprawdzenia konfiguracji systemu, aplikacji oraz sposobu, w jaki program komunikuje się z bazą danych. |