mvo*_*sek 5 mysql collation utf-8
utf8mb4_0900_bin
二进制排序规则与二进制排序规则有什么区别utf8mb4_bin
?
据我所知,存在三个差异(根据他们的文档):
案例映射(针对LOWER()
/UPPER()
功能):
https://dev.mysql.com/doc/refman/8.0/en/charset-unicode-sets.html#charset-unicode-sets-uca
LOWER() 和 UPPER() 函数根据其参数的排序规则执行大小写折叠。
在这种情况下,两种排序规则之间的区别在于,该_0900_
版本基于较新版本的 Unicode,很可能具有更多映射定义(甚至可能有一些更正)。
填充与无填充(尾随空格):
的 pad 属性为
utf8mb4_bin
isPAD SPACE
,而 forutf8mb4_0900_bin
it isNO PAD
。因此,涉及utf8mb4_0900_bin
不添加尾随空格的操作,并且涉及带有尾随空格的字符串的比较对于两种排序规则可能有所不同
本质上,utf8mb4_bin
忽略尾随空格,同时utf8mb4_0900_bin
不忽略它们。有关示例,请参阅文档(上面链接)。
排序(仅性能,不排序):
对于
_bin
除 之外的排序规则utf8mb4_0900_bin
,权重基于代码点,可能添加前导零字节。对于
utf8mb4_0900_bin
,权重是utf8mb4
编码字节。排序顺序与 相同utf8mb4_bin
,但速度更快。
将其翻译成人类的意思是,对于 U+FF9D 这样的代码点,将看到EF BE 9Dutf8mb4_bin
的 UTF-8 编码字节序列,并将其转换为00 FF 9D。但是,不会将其转换为代码点值。这是因为 UTF-8 字节序列已经是连续的,因此顺序与代码点值的顺序相同。那么为什么要费心这个额外的转换步骤呢?utf8mb4_0900_bin
归档时间: |
|
查看次数: |
2805 次 |
最近记录: |