Does a utf8_unicode_cs collation exist?
有人知道mysql的utf8-unicode-cs排序规则是否存在吗?到目前为止,我的搜索已经干涸了。如果它还不存在,那么创造一个它是否相当直接?或者以某种方式使用utf8-unicode-ci或utf8-bin,但是"模拟"一个utf8-unicode-cs排序规则会得到什么?
我也遇到了同样的问题,在谷歌搜索之后,MySQL似乎没有包含它。如你所说的"模拟它"
1)为保证数据库区分大小写,将表列设置为
- 严格选择:
SELECT"Joe" 不返回带有"joe"/"joe"/"joe"等的行 - 严格唯一索引:具有唯一索引的列将大小写差异视为不同的值。例如,如果使用utf8_unicode_ci排序规则,则在已经有"joe"的表上插入"joe"将触发"duplicate key"错误。如果使用了ut8_-bin,插入"joe"就可以了。
2)要获得正确的结果排序,请将排序规则添加到SQL查询中:
这是一个古老的问题,但似乎没有被任何其他问题所取代,所以我认为值得一提的是事情已经改变了。
MySQL版本8现在具有以下utf8mb4排序规则:
1 2 3 4 | utf8mb4_0900_ai_ci utf8mb4_0900_as_ci utf8mb4_0900_as_cs ... and many language-specific variants of same. |
(据我所知,没有,但在任何情况下都没那么有用:很少有理由将[A]和[A-急性]分组,然后分别将[A]和[A-急性]分组。
原始问题假设的"utf8_unicode_cs"的目的是由utf8mb4_0900_as_cs实现的。(0900表示它使用的是Unicode v 9.0.0,而不是utf8_unicode_ci使用的4.0.0。)
要使用这些字符集,您需要将字段从utf8更改为utf8mb4字符集,但这通常是一个好主意,因为旧的3字节最大编码无法处理例如emoji和其他非bmp字符。
来源:https://dev.mysql.com/doc/refman/8.0/en/charset-mysql.html