2013-03-05 72 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