Głównym punktem porównywania bazy danych jest określenie sposobu sortowania i porównywania danych.
Wrażliwość na wielkość liter w porównaniach ciągów
SELECT "New York" = "NEW YORK";`
zwróci true w przypadku sortowania bez rozróżniania wielkości liter; false w przypadku rozróżniania wielkości liter.
Które sortowanie robi, co można powiedzieć za pomocą _ci
i _cs
przyrostek w nazwie sortowania. _bin
collations do porównań binarnych (ciągi muszą być identyczne w 100%).
Porównanie umlautów/znaków z akcentami
porównywanie określa również, czy znaki akcentowane są traktowane jako ich odpowiedniki bazy łacińskiej w porównaniach ciągów.
SELECT "Düsseldorf" = "Dusseldorf";
SELECT "Èclair" = "Eclair";
zwróci true w pierwszym przypadku; fałszywe w tym ostatnim. Będziesz musiał przeczytać opis każdego zestawienia, aby dowiedzieć się, który jest który.
Sortowanie ciągów
Sortowanie wpływa na sposób sortowania ciągów.
Na przykład
-
Umlauty
Ä Ö Ü
znajdują się na końcu alfabetu w alfabecie fińskim/szwedzkimlatin1_swedish_ci
-
są traktowane jako
A O U
w niemieckim sortowaniu DIN-1 (latin_german1_ci
) -
oraz jako
AE OE UE
w niemieckim sortowaniu DIN-2 (latin_german2_ci
). (sortowanie według "książki telefonicznej") -
W języku
latin1_spanish_ci
, „ñ” (n-tylda) to osobna litera między „n” i „o”.
Te reguły spowodują różne porządki sortowania, gdy zostaną użyte znaki inne niż łacińskie.
Korzystanie z sortowania w czasie wykonywania
Musisz wybrać sortowanie tabeli i kolumn, ale jeśli nie masz nic przeciwko spadkowi wydajności, możesz wymusić na operacjach bazy danych określone sortowanie w czasie wykonywania za pomocą COLLATE
słowo kluczowe.
To posortuje table
przez name
kolumna przy użyciu niemieckich zasad sortowania DIN-2:
SELECT name
FROM table
ORDER BY name COLLATE latin1_german2_ci;
Korzystanie z funkcji COLLATE
w czasie wykonywania będzie miało wpływ na wydajność, ponieważ każda kolumna musi zostać przekonwertowana podczas zapytania. Więc zastanów się dwa razy, zanim zastosujesz to do dużych zbiorów danych.
Dokumentacja MySQL:
- Zestawy znaków i zestawienia obsługiwane przez MySQL
- Przykłady efektu sortowania
- Problemy z sortowaniem