MySQL CHARACTER SET 與 COLLATION

MySQL資料庫內儲存許多資料,但是要讓這些資料正確的儲存與顯示,我們可以在設定或是run time的時候去指定CHARACTER SET (字元集)。

我們可以從command line去看MySQL支援的CHARACTER SET = SHOW CHARACTER SET;


如上圖,有大家比較熟悉的如big5、ASCII等字元集。其他詳細內容請參考 MySQL字元集與校對規則

所謂字元集,就是指每個字符的內碼對應規則,例如我們使用big5的字元集儲存的資料,如果以其他的字元集來顯示,就會得到亂碼。


除此之外,還有一個COLLATION (翻譯成校對或是定序規則),如上圖,這個COLLATION是使用來排序使用的,例如big5的字元集有一個預設的COLLATION~ big5_chinese_ci,ci指的就是case insensitive (不分大小寫)。

定序規則還可以分成幾種類型:
(1) CS: case sensitive 區分大小寫,如果不分大小寫就是CI (case insensitive)
(2) AS: accent sensitive 區分腔調,如果不分腔調就是AI (accent insensitive)
(3) KS: kana sensitive 區分日文中的平假名與片假名,如果不分就是KI (kana insensitive)
(4) WS: width sensitive 區分全形與半形,如果不分就是WI (width insensitive)

AS中是說有些字元會依發音腔調而有差異,如果是AI (accent insensitive) 的話,你去搜尋resume,結果也會出現résumé的內容。通常中文只需要注意CS/CI與WS/WI的問題。

其他參考內容:
http://www.cnblogs.com/blodfox777/archive/2010/01/21/sqlserver-collation-conflict-and-solutions.html
http://www.dotblogs.com.tw/jimmyyu/archive/2009/08/30/10320.aspx

留言

這個網誌中的熱門文章

如何使用EXCEL連接MYSQL

關聯模式的五大鍵 Super key、Candidate Key、Primary Key、Alternate Key、Foreign Key

SELECT SQL語法總整理