,那么首先让我们看看我是否做对了:
字符集是一组符号和编码。排序规则是一组规则,用于比较字符集中的字符。
我应该使用utf8mb4,因为mysql utf8是一个欺诈,向上到3个字节,而不是真正的上到4个字节的实际utf8字符集。
因此,utf8mb4是一个字符集,his 8mb4_unicode_ci/his 8mb4_bin是他的许多不同的可用排序规则中的两个。
utf8_unicode_ci做不区分大小写的比较和其他特殊的比较(例如,我听说法语中的所有口音都搞砸了)。utf8_bin区分大小写,因为它比较字符的二进制值.
现在的问题:
(谢谢:)
发布于 2016-05-29 05:43:40
你“做得对”吗?是的,但我认为法语口音在utf8mb4_unicode_520_ci中是“正确的”。
您的两个SELECTs
都将进行全表扫描,因此效率低下。原因是您正在重写排序规则(对于#1),或者将列隐藏在函数中(LOWER
,用于#2),或者使用领先的通配符(LIKE %...
)。
如果您希望它是有效的,那么将name
声明为COLLATION utf8mb4_bin
,并简单地执行WHERE name = ...
。
你认为法语中的一些等价物和订单是“不正确的”吗?
A=a=ª=À=Á=Â=Ã=Ä=Å=à=á=â=ã=ä=å=Ā=ā=Ą=ą Aa ae=Æ=æ az B=b C=c=Ç=ç=Ć=ć=Č=č ch cz
D=d=Ð=ð=Ď=ď dz E=e=È=É=Ê=Ë=è=é=ê=ë=Ē=ē=Ĕ=ĕ=Ė=ė=Ę=ę=Ě=ě F=f fz ƒ G=g=Ğ=ğ=Ģ=ģ
gz H=h hz I=i=Ì=Í=Î=Ï=ì=í=î=ï=Ī=ī=Į=į=İ ij=ij iz ı J=j K=k=Ķ=ķ
L=l=Ĺ=ĺ=Ļ=ļ=Ł=ł lj=LJ=Lj=lj ll lz M=m N=n=Ñ=ñ=Ń=ń=Ņ=ņ=Ň=ň nz
O=o=º=Ò=Ó=Ô=Õ=Ö=Ø=ò=ó=ô=õ=ö=ø oe=Œ=œ oz P=p Q=q R=r=Ř=ř S=s=Ś=ś=Ş=ş=Š=š sh
ss=ß sz T=t=Ť=ť TM=tm=™ tz U=u=Ù=Ú=Û=Ü=ù=ú=û=ü=Ū=ū=Ů=ů=Ų=ų ue uz V=v W=w X=x
Y=y=Ý=ý=ÿ=Ÿ yz Z=z=Ź=ź=Ż=ż=Ž=ž zh zz Þ=þ µ
更多utf8排序规则。8.0和utf8mb4排序规则。
"520“(更新版)不把Æ
、Ð
、Ł
和Ø
作为单独的‘字母’,或者其他东西。
发布于 2019-11-11 01:10:20
例如,如果我希望允许使用utf8mb4_bin进行不区分大小写的搜索,那么我将不得不这样做:
请记住,如果使用LOWER
,它将忽略索引。
发布于 2021-10-30 17:37:14
获取信息
utf8mb4_0900_as_cs 8现在支持MySQL排序规则
如果不需要重音和案例识别,请使用utf8mb4_0900_ai_ci (这是自MySQL 8.0.1以来的默认排序规则)
https://stackoverflow.com/questions/37364618
复制相似问题