2013-03-05 68 views
10

有谁知道是否存在MySQL的utf8_unicode_cs排序规则?到目前为止,我的搜索已经干了。如果它根本不存在,创建一个相当简单吗?或者以某种方式使用utf8_unicode_ci或utf8_bin,但“模拟”人们对utf8_unicode_cs排序规则的期望?utf8_unicode_cs排序规则是否存在?

回答

11

我遇到了同样的问题,并在谷歌搜索后,似乎MySQL不包括它。以“模拟它”,正如你所说的那样,

1)为确保DB区分大小写:表列设置为utf8_bin整理
这样:

  • 严格的SELECT:SELECT "Joe"将不会返回具有“joe”/“joE”/“jOe”/ etc的行
  • 严格UNIQUE索引:具有UNIQUE索引的列会将案例差异视为不同的值。例如,如果使用utf8_unicode_ci排序规则,在已经具有“joe”的表上插入“Joe”将触发“重复键”错误。如果使用ut8_bin,插入“Joe”将正常工作。

2)要获得结果的正确排序:排序规则添加到SQL查询:

SELECT ... ORDER BY column COLLATE utf8_unicode_ci