2010-07-24 4 views
12

Я понимаю, наборы символов, но я не понимаю Collation. Я знаю, что вы получаете сопоставление по умолчанию с каждым набором символов в Mysql или любой СУБД, но я до сих пор не понимаю! Может ли кто-нибудь объяснить объяснение в неспециалистских терминах?Не понимаю Collation? (Mysql, RDBMS, наборы символов)

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

+0

Что вы думаете сверка означает? – msw

ответ

47

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

Case чувствительность сравнения строк

SELECT "New York" = "NEW YORK";` 

возвращает истину для случая нечувствительны сортировки; false для чувствительного к регистру.

Количественное сопоставление, которое может указывать суффикс _ci и _cs в имени сортировки. _bin сопоставления делают двоичные сравнения (строки должны быть на 100% идентичны).

Сравнение умляутов/диакритическими знаками

сверка также определяет, является ли обработаны с диакритическими знаками, как их латинских базовых аналогов в сравнении строк.

SELECT "Düsseldorf" = "Dusseldorf"; 
SELECT "Èclair" =  "Eclair"; 

вернет истину в первом случае; false в последнем. Вам нужно будет прочитать каждое описание сортировки, чтобы узнать, что именно.

Строка сортировки

Сопоставление влияет на то строки сортируются.

Например,

  • Умляуты Ä Ö Ü находятся в конце алфавита в финском/шведском алфавите 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 Reference:

+2

+1, черт возьми, хорошее объяснение сложного предмета –

+0

+1 от меня тоже. – TomTom

+0

+1 здесь тоже. Это здорово, когда люди тратят время и объясняют вещи в реальной полезной манере. Хорошая работа сэр. – cbmeeks

4

Collation является информация о том, как строки должны быть отсортированы и сравнивать.

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

Смежные вопросы