mysql - 使用二进制排序规则有什么影响?

标签 mysql database binary string-comparison collation

在回答this question时,我对一些我无法找到充分答案的事情变得不确定。

使用二进制 utf8_bin 和不区分大小写的 utf8_general_ci 排序规则之间有什么实际区别?

我可以看到三个:

  1. 两者的排序顺序不同; _bin 的排序顺序可能会将任何元音变音放在字母表的末尾,因为比较的是字节值(对吗?)

  2. _bin 中仅区分大小写搜索

  3. _bin 中不存在 A = Ä 等式

还有其他需要注意的差异或副作用吗?

引用:

未解决该问题的类似问题:

最佳答案

如果字符不同(只是大小写或变音符号不同),二进制排序规则会像 C 中的 strcmp() 一样比较字符串。它的缺点是排序顺序不自然。

非自然排序顺序的示例(如“二进制”中所示):A,B,a,b 在这种情况下,自然排序顺序将是,例如:A,a,B,b(同一字母的小写和大写变体彼此相邻排序)

二进制排序规则的实际优势是它的速度,因为字符串比较非常简单/快速。一般情况下,二进制索引可能不会产生预期的排序结果,但是对于精确匹配,它们可能很有用。

关于mysql - 使用二进制排序规则有什么影响?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53768831/

相关文章:

java - Hibernate OneToOne 映射到不同的表

php - 使用 codeigniter 更新表列

PHP/mysql条件更新查询

mysql - 在使用 MySql 调用 Read() 之前尝试访问字段无效

java - 如何反转该位操作数?

检查 C 中某个位的值

大于累加器大小的二进制数转换为十进制字符

MySQL:查询结果[图片]

Mysql 内连接查询显示错误结果

asp.net - 保存数据而不是添加到数据库