utf8mb4_cs_0900_as_cs 和 utf8mb4_900_as_cs 有什么区别?

问题描述 投票:0回答:1

我在为 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 collation
1个回答
1
投票

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

之后

这就是为什么 hsusan 在 chanakah

之前

来自 https://en.wikipedia.org/wiki/Czech_orthography

© www.soinside.com 2019 - 2024. All rights reserved.