在回答这个问题时,我对某些我无法找到足够答案的事情感到不确定.
使用二进制文件utf8_bin和不区分大小写的utf8_general_ci排序规则之间有什么实际区别?
我可以看到三个:
两者都有不同的排序顺序; _bin排序顺序可能会将任何变音符号放在字母表的末尾,因为字节值会被比较(对吗?)
只有区分大小写的搜索 _bin
没有A = Ä平等_bin
是否还有其他差异或副作用需要注意?
参考:
类似的问题没有解决这个问题:
Vla*_*oub 51
二进制排序规则将你的字符串与C中的strcmp()进行比较,如果字符不同(无论是大小写还是变音符号差异).它的缺点是排序顺序不自然.
非自然排序顺序的一个例子(如"二进制"中所示):A,B,a,b自然排序顺序在这种情况下例如:A,a,B,b(撒字母的小和大写变体被排序彼此相邻)
二进制整理的实际优点是它的速度,因为字符串比较非常简单/快速.在一般情况下,具有二进制的索引可能不会产生排序的预期结果,但是对于完全匹配,它们可能是有用的.
Hal*_*ter 14
utf8_bin:按字符串中每个字符的二进制值比较字符串.
utf8_general_ci:使用通用语言规则比较字符串并使用不区分大小写的比较.
utf8_general_cs:使用通用语言规则比较字符串并使用区分大小写的比较.
例如,以下将使用任一UTF8_general排序规则评估true ,但不评估utf8_bin排序规则:
Ä = A
Ö = O
Ü = U
通过utf8_general_ci整理,true即使不是相同的情况,它们也会返回.
http://www.phpbuilder.com/board/showpost.php?s=2e642ac7dc5fceca2dbca1e2b9c424fd&p=10820221&postcount=2