utf8mb4_cs_0900_as_cs 和 utf8mb4_900_as_cs有什么区别?

What is the difference between utf8mb4_cs_0900_as_cs and utf8mb4_900_as_cs?

提问人:LDevelop 提问时间:10/12/2023 更新时间:10/12/2023 访问量:43

问:

我在为我的 SQLALCHEMY API 构建单元测试时遇到了问题。我注意到我的MySQL数据库在要求按字符串列排序时返回意外的顺序。 稍加调查表明,我们的数据库正在使用 utf8mb4_cs_0900_as_cs。 但是当尝试使用 utf8mb4_0900_as_cs 订购时,我得到了预期的订单。

有人可以向我解释这两个排序规则之间有什么区别吗?

mysql> SELECT
    ->     column_0 AS name1
    -> FROM
    ->     (VALUES
    ->         ROW('default_chanakah'),
    -> ROW('default_aaa'),
    -> ROW('default_zzz'),
    ->         ROW('default_hsunan'),
    ->         ROW('default_kourin1')
    ->     ) AS hardcodedNames
    -> ORDER BY
    -> name1
    -> COLLATE utf8mb4_cs_0900_as_cs;
+------------------+
| name1            |
+------------------+
| default_aaa      |
| default_hsunan   |
| default_chanakah |
| default_kourin1  |
| default_zzz      |
+------------------+
5 rows in set (0.00 sec)

mysql> SELECT
    ->     column_0 AS name1
    -> FROM
    ->     (VALUES
    ->         ROW('default_chanakah'),
    -> ROW('default_aaa'),
    -> ROW('default_zzz'),
    ->         ROW('default_hsunan'),
    ->         ROW('default_kourin1')
    ->     ) AS hardcodedNames
    -> ORDER BY
    -> name1
    -> COLLATE utf8mb4_0900_as_cs;
+------------------+
| name1            |
+------------------+
| default_aaa      |
| default_chanakah |
| default_hsunan   |
| default_kourin1  |
| default_zzz      |
+------------------+
5 rows in set (0.00 sec)
MySQL 排序规则

评论


答:

5赞 Iłya Bursov 10/12/2023 #1

utf8mb4_cs_0900_as_cs是捷克语 utf8(第一个 cs 表示这一点),这个字母表包含“字母”,它位于Chh

这就是为什么 HSusan 在 CHAnakah 之前的原因

与 https://en.wikipedia.org/wiki/Czech_orthography 相比

enter image description here

评论

1赞 Renat 10/12/2023
仅供参考。在utf8mb4_LOCALE _ 0900 _ ??_??归类名称,捷克语 lang 是 或 ,根据 dev.mysql.com/doc/refman/8.0/en/charset-unicode-sets.html , 表 10.3 Unicode 归类语言说明符csczech
0赞 Rick James 10/14/2023
同时,是一个通用的排序规则 -- 对许多语言来说都很好,但对少数语言来说真的很好。utf8mb4_0900_as_cs