gpt4 book ai didi

MySQL 排序规则 : utf8mb4_unicode_ci vs "utf8mb4 - default collation"

转载 作者:可可西里 更新时间:2023-11-01 07:55:43 26 4
gpt4 key购买 nike

请帮助我理解 MySQL Workbench 中列出的排序规则之间的区别:

utf8mb4_unicode_ciutf8mb4 - 默认排序规则

附注每个人都在推荐使用 utf8mb4_unicode_ci。如果它如此受欢迎,为什么它不是默认值?它与默认值有何不同?

我使用的是 MySQL 5.7.21。

MySQL Workbench

最佳答案

utf8mb4_default??你在哪里看到的?

utf8mb4 的默认排序规则(MySQL 8.0 之前)是 utf8mb4_general_ci。这一次只检查一个字节,因此 ss 不被认为等于 ß。 utf8mb4 的大多数其他排序规则确实认为它们相等。

在一般用途的“更好”归类列表中(相对于特定于西类牙语等)的下一个是 utf8mb4_unicode_ci。这与几年前编写的 Unicode 归类算法 4.0 版相匹配。

然后是 utf8mb4_unicode_520_ci (Unicode 5.20),它可以“正确”处理更多事情。

当你到了 MySQL 8.0 时,会有一个 9.0 版本,utf8mb4_0900_ai_ci

有关差异的详细信息,请参阅 http://mysql.rjweb.org/utf8_collations.html . (注意:“utf8”与“utf8mb4”对于该页面上提供的信息的作用相同。)首先要注意:

utf8_general_ci         A=a=À=Á=Â=Ã=Ä=Å=à=á=â=ã=ä=å=Ā=ā=Ą=ą    Aa  ae          az
utf8_unicode_ci A=a=ª=À=Á=Â=Ã=Ä=Å=à=á=â=ã=ä=å=Ā=ā=Ą=ą Aa ae az Æ=æ
utf8_unicode_520_ci A=a=ª=À=Á=Â=Ã=Ä=Å=à=á=â=ã=ä=å=Ā=ā=Ą=ą Aa ae=Æ=æ az

这 3 行指出了 Ææ 的 3 种不同处理方式。

  • 这两个连字被同等对待(“不区分大小写”)。
  • general 不会将它排序在其他 A 附近的任何位置。 (在下方,我们看到它们在 Z 之后排序。)
  • unicode 将它们排在所有 A 之后、B 之前,就好像它们是一个单独的“字母”一样。
  • unicode_520 将它们视为等于字母对 ae

对于 5.7,在没有任何特定语言要求的情况下,我会使用 utf8mb4_unicode_520_ci

回到“为什么”的问题。更改默认值会带来损害现有安装的风险,而不是帮助。所以,我想,设计师是保守的。另一方面,8.0 有很多大的变化,所以没有那么不愿意改变。因此,转向 utf8mb4_0900_ai_ci。

关于MySQL 排序规则 : utf8mb4_unicode_ci vs "utf8mb4 - default collation",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51278467/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com