Обзор наборов символов и правил сортировки
Что такое наборы символов и правила сортировки
Набор символов — это множество символов, а правила сортировки — это правила сравнения и сортировки конкретного набора символов.
Например, подмножество набора символов может состоять из букв A, B и C. Значения по умолчанию могут определять их упорядочение по возрастанию A, B, C.
Если мы рассмотрим символы с разными регистрами, сложность возрастает. Бинарные правила сортировки будут оценивать символы A и a по-разному, упорядочивая их определённым образом. Нечувствительные к регистру правила сортировки будут оценивать A и a одинаково, в то время как правила сортировки немецкого телефонного справочника будут оценивать символы ue и ü одинаково.
У набора символов может быть много связанных с ним правил сортировки, но каждое правило сортировки связано только с одним набором символов. В MariaDB имя набора символов всегда является частью имени правила сортировки. Например, правила сортировки latin1_german1_ci применяются только к набору символов latin1. Каждый набор символов также имеет одно правило сортировки по умолчанию. Правило сортировки latin1 по умолчанию — это latin1_swedish_ci.
Например, по умолчанию символ y стоит между x и z, а в литовском языке — между i и k. Аналогично, порядок немецкого телефонного справочника отличается от порядка немецкого словаря, поэтому, хотя у них и одинаковый набор символов, правила сортировки разные.
Просмотр наборов символов и правил сортировки
В MariaDB набор символов по умолчанию — latin1, а правило сортировки по умолчанию — latin1_swedish_ci (однако это может отличаться в некоторых дистрибутивах, см., например, Отличия MariaDB в Debian). Вы можете просмотреть полный список наборов символов и правил сортировки, поддерживаемых MariaDB, по адресу Поддерживаемые наборы символов и правила сортировки, или посмотреть, что поддерживается на вашем сервере, с помощью команд SHOW CHARACTER SET и SHOW COLLATION.
По умолчанию A предшествует Z, поэтому следующее выражение истинно:
SELECT "A" < "Z"; +-----------+ | "A" < "Z" | +-----------+ | 1 | +-----------+
По умолчанию сравнения нечувствительны к регистру:
SELECT "A" < "a", "A" = "a"; +-----------+-----------+ | "A" < "a" | "A" = "a" | +-----------+-----------+ | 0 | 1 | +-----------+-----------+
Изменение наборов символов и правил сортировки
Наборы символов и правила сортировки могут быть установлены на уровне сервера, на уровне столбца, а также для взаимодействия клиент-сервер.
Например, ue и ü по умолчанию оцениваются по-разному.
SELECT 'Mueller' = 'Müller'; +----------------------+ | 'Müller' = 'Mueller' | +----------------------+ | 0 | +----------------------+
Используя системную переменную collation_connection для изменения набора символов соединения на latin1_german2_ci, или немецкого телефонного справочника, те же два символа будут оцениваться как эквивалентные.
SET collation_connection = latin1_german2_ci; SELECT 'Mueller' = 'Müller'; +-----------------------+ | 'Mueller' = 'Müller' | +-----------------------+ | 1 | +-----------------------+
Дополнительную информацию см. в разделе Установка наборов символов и правил сортировки.
© 2023 MariaDB
Licensed under the Creative Commons Attribution 3.0 Unported License and the GNU Free Documentation License.
https://mariadb.com/kb/en/character-set-and-collation-overview/