在回答this question时,我对一些我无法找到充分答案的事情变得不确定。
使用二进制 utf8_bin
和不区分大小写的 utf8_general_ci
排序规则之间有什么实际区别?
我可以看到三个:
两者的排序顺序不同;
_bin
的排序顺序可能会将任何元音变音放在字母表的末尾,因为比较的是字节值(对吗?)在
_bin
中仅区分大小写搜索_bin
中不存在A = Ä
等式
还有其他需要注意的差异或副作用吗?
引用:
- 9.1.2. Character Sets and Collations in MySQL
- 9.1.7.6. The _bin and binary Collations在 mySQL 手册中
- 9.1.7.7. The BINARY Operator
未解决该问题的类似问题:
最佳答案
如果字符不同(只是大小写或变音符号不同),二进制排序规则会像 C 中的 strcmp()
一样比较字符串。它的缺点是排序顺序不自然。
非自然排序顺序的示例(如“二进制”中所示):A,B,a,b
在这种情况下,自然排序顺序将是,例如:A,a,B,b
(同一字母的小写和大写变体彼此相邻排序)
二进制排序规则的实际优势是它的速度,因为字符串比较非常简单/快速。一般情况下,二进制索引可能不会产生预期的排序结果,但是对于精确匹配,它们可能很有用。
关于mysql - 使用二进制排序规则有什么影响?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53768831/