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