Я не понимаю Collation?(Mysql, RDBMS, наборы символов) - PullRequest
13 голосов
/ 24 июля 2010

Я понимаю наборы символов, но не понимаю Collation. Я знаю, что вы получаете сопоставление по умолчанию с каждым набором символов в Mysql или любой RDBMS, но я все еще не понимаю! Может кто-нибудь объяснить, пожалуйста, с точки зрения непрофессионала?

Заранее спасибо; -)

Ответы [ 2 ]

52 голосов
/ 24 июля 2010

Суть сопоставления базы данных заключается в определении того, как данные сортируются и сравниваются.

Чувствительность к регистру при сравнении строк

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:

4 голосов
/ 24 июля 2010

Сортировка - это информация о том, как строки должны сортироваться и сравниваться.

Он содержит, например, чувствительность к регистру, например, a = A, специальные соображения, например, a = á и порядок символов, например O <<code>Ö.

...