Що означає зіставлення у SQL і що це робить?
Що означає зіставлення у SQL і що це робить?
Відповіді:
Збір можна вважати просто порядком сортування.
В англійській мові (і це дивно кузен, американець), порівняння може бути досить простою справою, що складається з замовлення за кодом ASCII.
Як тільки ви потрапляєте на ці дивні європейські мови з усіма їх наголосами та іншими особливостями, зіставлення змінюється. Наприклад, хоча різні форми наголосів a
можуть існувати в різних кодових точках, їх, можливо, потрібно буде сортувати, як якщо б вони були однією буквою.
e
, ë
, é
, ě
і è
може бути різні літери для цілей впорядкування (але , можливо , та ж буква при пошуку, рис тих божевільних європейців;)).
42
літерами, 15
з них діакритики?
where st= 'aaa'
?
Крім того, що "наголошені літери в деяких західноєвропейських мовах сортуються інакше, ніж без наголосів", ви повинні враховувати і групи букв, які іноді також сортуються по-різному.
Традиційно в іспанській мові "ch" вважається буквою самостійно, що відповідає "ll" (обидва вони представляють одну фонему), тому список буде впорядкований так:
Зауважте, що всі слова, що починаються з одного c, йдуть разом, за винятком слів, що починаються з ch, що йдуть після них, те саме, що ll - слова, які починаються після всіх слів, починаючи з одного l . Це впорядкування ви побачите в старих словниках та енциклопедіях, іноді навіть сьогодні дуже консервативними організаціями.
Королівська академія мови змінила це, щоб полегшити розміщення іспанської мови в світі обчислень. Тим не менш, ñ все ще вважається іншою буквою, ніж n, і йде за нею, а перед o . Отже, це правильно упорядкований список:
Вибравши правильне порівняння, ви все це зробите автоматично для вас :-)
Правила, які розповідають, як порівнювати та сортувати рядки: порядок букв; чи має значення випадок, чи має значення діакритика тощо.
Наприклад, якщо ви хочете, щоб усі літери були різними (скажімо, якщо ви зберігаєте імена файлів у UNIX
), ви використовуєте UTF8_BIN
порівняння:
SELECT 'A' COLLATE UTF8_BIN = 'a' COLLATE UTF8_BIN
---
0
Якщо ви хочете ігнорувати відмінності у регістрі та діакритиці (скажімо, для пошукової системи), ви використовуєте UTF8_GENERAL_CI
порівняння:
SELECT 'A' COLLATE UTF8_GENERAL_CI = 'ä' COLLATE UTF8_GENERAL_CI
---
1
Як бачимо, це зіставлення (правило порівняння) вважає A
великим літером і замінює ä
ту саму букву, ігноруючи відмінності в регістрі та діакритиці.
Збір визначає спосіб сортування та порівняння рядкових значень
Наприклад, він визначає, як поводитися
äàa
тощо)Aa
)cote < côte < coté < côté.
cote < coté < côte < côté
Збірка означає присвоєння певного порядку символам в алфавіті, скажімо, ASCII або Unicode тощо.
Припустимо, у вашому алфавіті є 3 символи - {A, B, C}. Ви можете визначити деякі приклади зіставлення для нього, призначивши символам цілісні значення
Власне кажучи, ви можете визначити n! порівняння за алфавітом розміру n. Враховуючи такий порядок, різні сортування підпрограм, як LSD / MSD рядки рядків, використовують його для сортування рядків.
Посилання взято з цієї статті: Порівнювання - це сукупність правил для порівняння символів у наборі символів. Він також постановив для сортування символів, а правильний порядок двох символів змінюється в залежності від мови. Збірка порівняла два рядки на зразок, якщо слово більше іншого, і сортувати відповідно.
Якщо ви використовуєте набір символів "latin1", ви можете використовувати зіставлення "latin1_swedish_ci".
Ви повинні вибрати правильне порівняння, оскільки неправильне зіставлення може вплинути на продуктивність вашої бази даних.
http://en.wikipedia.org/wiki/Коляція
Збір - це складання письмової інформації в стандартне замовлення. (...) Алгоритм зіставлення, такий як алгоритм зіставлення Unicode, визначає порядок за допомогою порівняння двох заданих рядків символів та вирішення того, який повинен бути перед іншим.