В чем разница между сопоставлением и набором символов?

24

У меня есть общий вопрос о базах данных. Мы обычно используем термин сопоставление с базами данных. Я хотел бы знать, чем он отличается от набора символов. Я думаю, что сопоставление является подмножеством набора символов. Если это правда, какова цель множественного сопоставления под набором символов.

Shameer
источник
Также обратитесь к stackoverflow.com/questions/341273/…
Санхьюн Ли

Ответы:

27

Наборы символов - это список символов. Если вы сравните ASCII с latin1 , с latin1 вы сможете написать все американские слова, потому что latin1 содержит все символы ASCII , которых достаточно для написания любого английского слова. Напротив, в ASCII вы не сможете писать все слова на западноевропейских языках, потому что, например, отсутствуют такие символы, как «А», «ë», «õ», «С».

Упорядочение о сравнении между символами. Он определяет набор правил для сравнения символов набора символов.

В MySQL сопоставления часто связаны с одним языком (например, «latin1_swedish_ci», «latin1_german1_ci» и т. Д.). При заказе запроса на выборку слово, начинающееся с «ö», будет помещено между двумя словами, начинающимися с «o» и «p» в некоторых языках (с некоторыми сопоставлениями). Но с другим сопоставлением этот символ может быть помещен полностью в конце, что делает результирующий выбор другим.

uloBasEI
источник
Спасибо, теперь почти ясно. Поэтому я думаю, что выбор параметров сортировки - серьезная проблема при планировании многоязычного сайта? Например, если сопоставление 'latin1_swedish_ci', я не получу ожидаемый результат при работе с языками Юникод.
Shameer
1
Я бы посоветовал вам перейти на юникод, иначе у вас в какой-то момент возникнут проблемы (например, языки азиатов). Сортировка будет зависеть от языка пользователя. Это то, с чем вам следует быть осторожным, если вы хотите иметь многоязычный инструмент.
Deadalnix
6

Как и в предыдущем ответе, набор символов представляет собой набор символов (букв, цифр, идеограмм и т. Д.), Назначенных на номер; чтобы увидеть их, у вас должен быть шрифт (маленькие «картинки», которые мы читаем). Они были важны при использовании LatinX, потому что для каждого X одно и то же число (байт) могло относиться к другому символу.

В настоящее время более важно выбрать кодировку: стандартом является UTF-8, наиболее удачное представление Unicode (совместимое с ASCII, но настолько гибкое, чтобы включить все языки, даже китайский и японский) и стандарт W3C. Другими словами, он включает в себя все наборы символов.

Сопоставление: это старомодное слово, производное от латыни. Это означает: сравнить копию (рукопись) с оригиналом, чтобы найти различия (ошибки или изменения). Это было очень полезно в прошлом, но сейчас это почти архаизм, потому что наши документы и книги написаны с использованием компьютеров, и копия всегда идентична оригиналу. Пример: в итальянском (происходит от латинского) есть глагол «collazionare», но он есть в словарях, и никто не использует его.

Таким образом, сопоставление определяет поведение операторов сравнения: =,>, <, <=,> = ...

Конечно, эти операторы используются для определения того, являются ли две строки одинаковыми или одно слово «больше» другого, что очень важно, если мы хотим отсортировать. Буквы не в том же порядке для каждого языка, поэтому слово может быть больше, чем другое, используя сопоставление, но не используя другое. См. [1] для практического примера.

  • сортировки "bin" самые строгие: SELECT "b" = "B" => FALSE

  • параметры сортировки "ci" не чувствительны к регистру: SELECT "b" = "B" => TRUE

  • «общие» склонны игнорировать некоторые различия: SELECT «a» = «à» => TRUE

  • другие специфичны для одного или нескольких языков. Пример "шведский" (я не знаю, почему шведский часто используется по умолчанию)

Я все еще ищу веб-сайт, где поведение каждого сопоставления подробно описано ... эти примеры связаны с моим опытом.

[1] http://www.olcot.co.uk/sql-blogs/revised-difference-between-collation-sql_latin1_general_cp1_ci_as-and-latin1_general_ci_as

Francesco
источник
1
Шведский язык все еще используется по умолчанию в некоторых битах MySQL. Это наследие, когда MySQL был создан небольшой командой в Швеции в 1995 году
Крис Вуд