MySQL Sort Order - Collation?
我在MySQL中很难对char字段进行排序。问题是重音字符会与不重音字符混淆。例如:
1 2 3 | Abc ábd Acc |
我想这可能与整理有关。所以我在读了这篇文章之后,把我的表的排序改为
我还应该补充一点,我不介意排序的顺序,只要排序不会导致混合列表。换句话说,这很好:
1 2 3 | ábd Abc Acc |
这就是:
1 2 3 | Abc Acc ábd |
期待您的回复。
您只需要使用区分大小写的排序规则,例如:
UPD
很抱歉,似乎没有
您应该更改特定字段的排序规则,而不是表的排序规则(或者确保该字段使用表默认值)。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | mysql> SELECT * FROM ( -> SELECT 'A' as l -> UNION ALL -> SELECT 'á' as l -> UNION ALL -> SELECT 'A' as l) ls -> ORDER BY l; +----+ | l | +----+ | A | | á | | A | +----+ 3 rows in set (0.00 sec) mysql> SELECT * FROM ( -> SELECT 'A' as l -> UNION ALL -> SELECT 'á' as l -> UNION ALL -> SELECT 'A' as l) ls -> ORDER BY l COLLATE utf8_bin; +----+ | l | +----+ | A | | A | | á | +----+ 3 rows in set (0.00 sec) |
@牛顿有一个很好的起点,但他和"社区"都没有意识到这是不确定的。因此,我提供的答案应该是"修复"它:
unicode_-ci(以及几乎所有其他排序规则):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
箱子:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
(您可以在
下面是utf8排序的完整概要(使用这种技术):http://mysql.rjweb.org/utf8_collations.html
建议您在https://bugs.mysql.com/bug.php上单击"影响我"?ID=58797