mysql utf8mb4_cs_0900_as_cs和utf8mb4_900_as_cs有什么区别?

vfh0ocws  于 2023-10-15  发布在  Mysql
关注(0)|答案(1)|浏览(151)

我在为SQLALCHEMY API构建单元测试时遇到了一些问题。我注意到我的MySQL DB在请求按字符串列排序时返回了一个意外的顺序。一个小调查表明,我们的DB正在使用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)
8yparm6h

8yparm6h1#

utf8mb4_cs_0900_as_cs是捷克语utf8(第一个cs表示),这个字母表包含“字母”Ch,它在h之后
这就是为什么苏珊在亚拿卡之前
https://en.wikipedia.org/wiki/Czech_orthography

相关问题