12.1 Наборы символов и сортировки в целом
Набор символов — это набор символов и кодировок. Сортировка — это набор правил сравнения символов в наборе символов. Давайте проиллюстрируем разницу на примере воображаемого набора символов.
Предположим, что у нас есть алфавит с четырьмя буквами: A, B, a, b. Мы присваиваем каждой букве число: A = 0, B = 1, a = 2, b = 3. Буква A — это символ, число 0 — кодировка для A, а сочетание всех четырёх букв и их кодировок образует набор символов.
Предположим, что мы хотим сравнить два строковых значения, A и B. Самый простой способ сделать это — посмотреть на кодировки: 0 для A и 1 для B. Поскольку 0 меньше 1, мы говорим, что A меньше B. Мы только что применили сортировку к нашему набору символов. Сортировка — это набор правил (в этом случае только одно правило): “сравните кодировки”. Мы называем эту простейшую из всех возможных сортировок бинарной сортировкой.
Но что, если мы хотим сказать, что строчные и прописные буквы эквивалентны? Тогда у нас должно быть как минимум два правила: (1) рассматривать строчные буквы a и b как эквивалентные A и B; (2) затем сравнивать кодировки. Мы называем это регистронезависимой сортировкой. Она немного сложнее, чем бинарная сортировка.
В реальной жизни большинство наборов символов содержат множество символов: не только A и B, но и целые алфавиты, иногда несколько алфавитов или восточные системы письма с тысячами символов, а также множество специальных символов и знаков препинания. Также в реальной жизни большинство сортировок имеют множество правил, не только для различения регистра, но и для различения диакритических знаков (диакритический знак — это знак, прикреплённый к символу, как, например, в немецком Ö), и для сопоставлений из нескольких символов (например, правило, что Ö = OE в одной из двух немецких сортировок).
MySQL может выполнять эти операции за вас:
Хранить строки, используя различные наборы символов.
Сравнивать строки, используя различные сортировки.
Смешивать строки с различными наборами символов или сортировками в одном сервере, одной базе данных или даже в одной таблице.
Разрешать указание набора символов и сортировки на любом уровне.
Для эффективного использования этих функций необходимо знать доступные наборы символов и сортировки, как изменить значения по умолчанию и как они влияют на поведение операторов и функций строк.
© 2025 Oracle
Licensed under the GPLv2 License.