Яка різниця між зіставленням та набором символів?


24

У мене загальне питання щодо баз даних. Зазвичай ми використовуємо термін зіставлення з базами даних. Я хотів би знати, чим він відрізняється від набору символів. Я думаю, зіставлення - це підмножина набору символів. Якщо це правда, яка мета множинного зіставлення під набором символів.


Відповіді:


27

Набори символів - це список символів. Якщо ви порівнюєте ASCII з latin1 , з latin1 ви зможете написати всі американські слова, тому що latin1 містить усі символи ASCII , яких достатньо для написання будь-якого англійського слова. Навпаки, з ASCII ви не зможете написати всіх слів західноєвропейських специфічних мов, оскільки, наприклад, такі символи, як "À", "ë", "õ", "Ñ", відсутні.

Збірка - це порівняння між персонажами. Він визначає набір правил для порівняння символів набору символів.

У MySQL порівняння часто пов’язані з однією мовою (наприклад, "latin1_swedish_ci", "latin1_german1_ci" тощо). Коли ви замовляєте запит на вибір, слово, що починається з 'ö', буде розміщене між двома словами, починаючи з 'o' і 'p' в деяких мовах (з деякими посиланнями). Але при іншому порівнянні цей персонаж може бути розміщений повністю в кінці, що робить результат вибору різним.


Дякую, зараз майже зрозуміло. Тож я думаю, що вибір підбору даних є серйозною проблемою при плануванні багатомовного сайту? Наприклад, якщо зіставлення "latin1_swedish_ci", я не буду отримувати очікуваного результату під час роботи з мовами unicode.
Shameer

1
Я б запропонував вам піти на unicode, інакше в якийсь момент у вас виникнуть проблеми (мови для азіатських прикладів). Порівняння залежатиме від мови користувача. Це те, з чим вам потрібно бути обережним, якщо ви хочете мати багатомовний інструмент.
deadalnix

6

Як і в попередній відповіді, набір символів - це набір символів (літери, цифри, ідеограми тощо), присвоєний номеру; щоб мати можливість їх бачити, ви повинні мати шрифт (маленькі «малюнки», які ми читаємо). Вони мали важливе значення за допомогою LatinX, оскільки для кожного X однакове число (байт) могло означати різний символ.

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

Збір: це слово старомодної моди, що походить від латинської мови. Це означає: порівняйте копію (рукопис) з оригіналом, щоб знайти відмінності (помилки чи зміни). Раніше це було дуже корисно, але зараз це майже архаїзм, оскільки наші документи та книги написані на комп’ютерах, а копія завжди тотожна оригіналу. Приклад: в італійській (походить від латинської) дієслово "collazionare", але воно є в словниках, і його ніхто не використовує.

Отже, порівняння визначає поведінку операторів порівняння: =,>, <, <=,> = ...

Звичайно, ці оператори використовуються для того, щоб вирішити, чи два струни однакові, чи слово "більше", ніж інше, дуже важливо, якщо ми хочемо сортувати. Букви не в одному порядку для кожної мови, тому слово може бути більше, ніж інше за допомогою порівняння, але не використовувати інше. Див. [1] практичний приклад.

  • порівняння "бін" є найсуворішим: SELECT "b" = "B" => FALSE

  • посилання "ci" не враховує регістри: SELECT "b" = "B" => ІСТИНА

  • "загальні", як правило, ігнорують деякі відмінності: SELECT "a" = "à" => ІСТИНА

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

Я все ще шукаю веб-сайт, де детально описано поведінку кожного зіставлення ... ці приклади пояснюються моїм досвідом.

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


1
у деяких бітах MySQL все ще є замовчуванням. Його спадщина з моменту, коли MySQL була створена невеликою командою у Швеції ще в 95 році
Кріс Вуд
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.