2012-04-05 27 views
4

當我創建數據庫時,我要求選擇Default Collat​​e,當我創建一個表時,我要求選擇Collat​​e。 utf8_general_ci或...拉丁...?什麼是區分哪一個是正確的基礎?MySQL - 整理

+1

顯示* _CI是不區分大小寫的,這意味着,如果你這樣做'WHERE像場「%ABC%」,這將匹配BABC或BABC。 – 2012-04-05 15:27:04

+1

現在你通常需要utf8,所以你可以存儲各種腳本,而不僅僅是拉丁字母。確保你的客戶端應用程序(php,無論)也使用相同的編碼。 – knittl 2012-04-05 15:27:30

+0

謝謝。是什麼讓你選擇ci或cs?我想不出任何CS的生活的例子.. – lunar 2012-04-05 15:47:45

回答

12

A collation確定字符的排序順序,它是用於比較字符集中字符的一組規則。任何給定character set總是至少有一個排序規則。歸類名CICS,和的端部是指不區分大小寫的情況下分別敏感二進制。像utf8_bin這樣的二進制排序規則通常也是區分大小寫的,因爲它會根據字符串的數值進行二進制字符串比較。

這意味着如果您想要製作不區分大小寫的選擇查詢,其中a和A沒有區別,您應該使用以ci結尾的排序規則。如果要製作區分大小寫的查詢,其中a和A不同,則應使用以cs或bin結尾的歸類。

如果沒有選中,則應用標準級別。有在MySQL整理各種層次,他們可以例如通過

mysql> show variables like '%collation%'; 
+----------------------+-------------------+ 
| Variable_name  | Value    | 
+----------------------+-------------------+ 
| collation_connection | utf8_general_ci | 
| collation_database | latin1_swedish_ci | 
| collation_server  | latin1_swedish_ci | 
+----------------------+-------------------+ 
+1

謝謝。對於第二個例子,我認爲應該是'cs'。 – lunar 2012-04-05 15:58:37

+0

是的,我修復了錯字 – 0x4a6f4672 2013-03-08 11:11:47