«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Почему «Harligt» и «Härligt» возвращают одинаковые результаты в MySQL? Взгляд на сортировку и нормализацию символов.

Почему «Harligt» и «Härligt» возвращают одинаковые результаты в MySQL? Взгляд на сортировку и нормализацию символов.

Опубликовано 9 ноября 2024 г.
Просматривать:948

Why Does \

Обработка специальных символов в MySQL: объяснение парадокса

В MySQL выполнение запросов, включающих специальные символы, такие как 'Å', 'Ä', и «Ö» часто вызывают вопросы относительно согласованности результатов. Например, запросы с «Harligt» и «Härligt» дают одинаковые результаты, что приводит пользователей в недоумение.

Это явление связано с настройками сортировки MySQL по умолчанию, а именно «utf8_general_ci» и «utf8_unicode_ci». Эти параметры сортировки нормализуют определенные символы Юникода, включая скандинавские буквы, приравнивая их к их английским эквивалентам (например, «Ä = A»). Такая нормализация упрощает операции сравнения и поиска, но может быть неудобной в определенных сценариях.

Чтобы решить эту проблему, рассмотрите следующие варианты:

  • Используйте другое сопоставление: Параметры сортировки, такие как "utf8_bin", сохраняют значения символов, включая специальные символы, но могут иметь последствия для других операций.
  • Укажите параметры сортировки в запросах: Для конкретных запросов, в которых вы хотите переопределить параметры сортировки по умолчанию. , добавьте к запросу «COLLATE utf8_bin». Пример:
select * from topics where name='Harligt' COLLATE utf8_bin;
  • Создайте пользовательскую сортировку: Если ни одно из вышеперечисленных решений В соответствии с вашими потребностями вы можете создать собственные параметры сортировки, соответствующие вашим конкретным требованиям.

Стоит отметить, что операции LIKE без учета регистра в MySQL не могут выполняться без нормализации специальных символов. Однако соответствующие обсуждения можно найти здесь:

  • [Ищем параметры сортировки MySQL без учета регистра, где «a» != «ä»](https://dba.stackexchange.com/questions/231116/ поиск-без учета регистра-mysql-collation-where-a-a)
  • [Поиск с учетом регистра в MySQL для поля utf8_bin] (https://stackoverflow.com/questions/9704962/mysql-case-sensitivity- поиск-поля-utf8-bin)
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3