10.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.