MariaDB 10.11 版本确实没有 utf8mb4_0900_ai_ci 排序规则。
我之前的回答是基于 MariaDB 致力于兼容 MySQL 的大趋势,并且在一些早期版本中确实引入了部分基于 Unicode 9.0.0 的特性,但关于 utf8mb4_0900_ai_ci 的具体支持时间点我判断有误。
事实是:
utf8mb4_0900_ai_ci是 MySQL 8.0 的默认排序规则,它是 MySQL 独有的,基于 ICU (International Components for Unicode) 库实现的。- MariaDB 有自己的基于 UCA (Unicode Collation Algorithm) 的排序规则实现。 尽管 MariaDB 同样支持
utf8mb4字符集,并且也有很多utf8mb4_unicode_ci等排序规则,但它并没有直接引入 MySQL 的utf8mb4_0900_ai_ci。 - MariaDB 10.2.1 引入的是基于 Unicode 9.0 UCA 的
utf8mb4_unicode_900_ai_ci这样的排序规则(如果有的话,但通常是utf8mb4_unicode_ci使用较新的 UCA 版本),而不是直接使用 MySQL 的0900_ai_ci命名约定。
如果您在 MariaDB 10.11 中需要一个功能等同于 utf8mb4_0900_ai_ci 的排序规则,您应该使用:
utf8mb4_unicode_ci
这是 MariaDB 中与 utf8mb4_0900_ai_ci 功能最接近且最常用的排序规则。它也是大小写不敏感(Case Insensitive)和重音不敏感(Accent Insensitive)的,并且基于 Unicode 标准实现。虽然它可能不是基于确切的 Unicode 9.0.0 UCA,但它会使用 MariaDB 版本支持的最新 UCA 版本,通常在实际应用中效果非常好。
总结:
在 MariaDB 10.11 中,请使用 utf8mb4_unicode_ci 来替代 MySQL 的 utf8mb4_0900_ai_ci。这两个排序规则在大部分场景下能够提供相同的行为,即大小写和重音不敏感的 utf8mb4 字符集比较。
再次为我的错误信息表示歉意,感谢您的指正!