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 Uw niemieckim sortowaniu DIN-1 (latin_german1_ci) -
oraz jako
AE OE UEw 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