首页 > 数据库 > mysql教程 > 为什么'Harligt”和'Härligt”在 MySQL 中返回相同的结果?

为什么'Harligt”和'Härligt”在 MySQL 中返回相同的结果?

Linda Hamilton
发布: 2024-10-25 08:50:02
原创
690 人浏览过

Why Do `Harligt` and `Härligt` Return the Same Results in MySQL?

MySQL 对 Unicode 字符的处理:Ä、Ö 和 Ü

在搜索两个“Harligt”时遇到相同的查询结果是令人费解的MySQL 中的“和”Härligt”。此行为源于 MySQL 的默认排序规则设置,该设置等同于某些 Unicode 字符。

MySQL 的非特定于语言的 Unicode 排序规则(例如 utf8_general_ci 和 utf8_unicode_ci)将某些字符视为等效字符,即:

  • Ä = A
  • Ö = O
  • Ü = U

因此,两个查询将所有三个字符视为相同,从而产生匹配结果.

要解决此问题,有两个选项:

  1. 更改排序规则:切换到不执行此字符等同的排序规则,例如 utf8_bin 。然而,这一决定可能会对数据处理产生更广泛的影响。
  2. 覆盖特定查询的排序规则:对于单个查询,可以通过显式指定所需的排序规则来覆盖默认排序规则。例如:
<code class="sql">select * from topics where name='Harligt' COLLATE utf8_bin;</code>
登录后复制

此方法允许区分大小写的搜索,而无需自动字符转换。

如果需要不区分大小写的搜索但不进行字符转换,MySQL目前不提供合适的排序规则。然而,社区内正在进行讨论和潜在的解决方案。

以上是为什么'Harligt”和'Härligt”在 MySQL 中返回相同的结果?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板