我在为 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)
utf8mb4_cs_0900_as_cs
是捷克语utf8(第一个cs表示这一点),这个字母表包含“字母”Ch
,它在h
之后
这就是为什么 hsusan 在 chanakah
之前