Основната цел на съпоставянето на база данни е да се определи как данните се сортират и сравняват.
Чувствителност на малки и главни букви при сравнения на низове
SELECT "New York" = "NEW YORK";`
ще върне true за съпоставяне без значение на главни и малки букви; false за регистри и малки букви.
Кое съпоставяне прави, което може да се каже от _ci
и _cs
суфикс в името на съпоставянето. _bin
съпоставянията правят двоични сравнения (низовете трябва да са 100% идентични).
Сравнение на умлаути/знаци с акцент
съпоставянето също така определя дали символите с ударение се третират като техни латински основни аналоги при сравнения на низове.
SELECT "Düsseldorf" = "Dusseldorf";
SELECT "Èclair" = "Eclair";
ще върне true в първия случай; невярно в последното. Ще трябва да прочетете описанието на всяко съпоставяне, за да разберете кое е кое.
Сортиране на низове
Съпоставянето влияе върху начина, по който се сортират низовете.
Например
-
Umlauts
Ä Ö Ü
са в края на азбуката на финландската/шведската азбукаlatin1_swedish_ci
-
те се третират като
A O U
в немско сортиране по DIN-1 (latin_german1_ci
) -
и като
AE OE UE
в немско сортиране по DIN-2 (latin_german2_ci
). ("телефонен указател" сортиране) -
На
latin1_spanish_ci
, "ñ" (n-tilde) е отделна буква между "n" и "o".
Тези правила ще доведат до различен ред на сортиране, когато се използват нелатински знаци.
Използване на съпоставяне по време на изпълнение
Трябва да изберете съпоставяне за вашата таблица и колони, но ако нямате нищо против удара на производителността, можете да принудите операциите на базата данни в определено съпоставяне по време на изпълнение, като използвате COLLATE
ключова дума.
Това ще сортира table
от name
колона, използвайки немски правила за сортиране по DIN-2:
SELECT name
FROM table
ORDER BY name COLLATE latin1_german2_ci;
Използване на COLLATE
по време на изпълнение ще има последици за производителността, тъй като всяка колона трябва да бъде преобразувана по време на заявката. Така че помислете два пъти, преди да приложите това, направете големи набори от данни.
Справка за MySQL:
- Набори от символи и съпоставяния, които MySQL поддържа
- Примери за ефекта от съпоставянето
- Проблеми със съпоставянето