SQL. Co to jest collation ? Jak ustawić rozpoznawanie dużych liter ? SQL serwer domyślnie nie rozróżnia wielkich i małych liter w wyszukiwaniu lub filtrowaniu rekordów. Jednak podczas tworzenia bazy danych możemy ustawić właściwość zwaną collation. W Object Explorer po wybraniu prawym przyciskiem myszy opcji New Database... otworzy się okno tworzenia bazy danych. Poza wieloma opcjami do wyboru mamy do wyboru zakładkę Options: Po wybraniu tej opcji po prawej stronie jest pole Collation: i z pola kombi wybieramy odpowiednią dla naszego języka właściwość: Właściwość ta jest bardzo ważna, gdyż określa obsługę języka, wrażliwość na wielkość znaków (case sensitive) ale także kolejność sortowania znaków w całej bazie danych. Od wersji SQL Server 2019 wprowadzono wsparcie dla kodowania UTF-8 w typach zwykłych (np. NCHAR) pod warunkiem jednak, że ustawienie collation kończy się na UTF8. Dla typów nchar i nvarchar (tych, które obsługują UNICODE) można ustawić na przykład taki collation: Polish_100_CS_AS_WS_SC_UTF8. (jest do wyboru z listy).Jeżeli w nazwie właściwości znajduje się akronim SC (supplementary characters) to typy będą używały kodowania UTF - 16 i będą obsługiwały pełny zakres znaków UNICODE. Jak wspomniałem wcześniej ustawienie to służy również do sortowania rekordów. Aby sprawdzić obecne ustawienia tej właściwości możemy skorzystać z funkcji fn_helpcollation: SELECT name, description FROM sys.fn_helpcollations(); W kolumnie descrription dla właściwości , o której mowa (Polish_100_CS_AS_KS_WS_SC_UTF8) znajdziemy opis szczegółowy: Polish-100, case-sensitive, accent-sensitive, kanatype-sensitive, width-sensitive, supplementary characters, UTF8 Znaczenie ważniejszych skrótów: CS - rozróżnia wielkie i małe litery. Małe litery są sortowane przed ich wielki wersjami.AS - rozróżnia znaki z akcentem i bez akcentu (np. w hiszpańskim i francuskim)KS- typy znaków japońskich (KANA) W poleceniu SELECT możemy bezpośrednio określić sortowanie kolumny jako część tej definicji. Jeżeli w ustawieniach środowiska bazy danych brak ustawienia wielkości liter (_CS) zapytanie: SELECT firstname, lastname FROM Employees WHERElastname = N'davis'; zwróci wiersz dla pracownika o nazwisku "Davis". Ale jeżeli w tym samym środowisku (bez ustawienia _CS) uruchomimy takie zapytanie: SELECT firstname, lastname FROM EmployeesWHERE lastname COLLATE Latin1_General_CS_AS = N'davis'; nie dostaniemy żadnego rekordu, bo w bazie danych nie ma osoby o nazwisko "davis" pisanego małą literą.Więcej informacji na szkoleniu : https://e-edumade.pl/szkolenie-sql-serwer-dla-zaawansowanych/