2009-10-31 64 views
4

當我使用phpMyAdmin查看我的在線表格時,它使用整理方法「latin_swedish_ce」。爲什麼?什麼是默認?而且,用什麼對照方法?[MySQL]:什麼是整理方法?

回答

5

MySQL中的字符串有一個​​。 Utf8是一個字符集,而utf8_bin是它的一個排序規則。整理確定了MySQL如何比較字符串。

例如,這裏有兩種方法,比較了UTF8字符串:

select case when 'test' = 'TEST' collate utf8_bin 
     then 'true' else 'false' end, 
     case when 'test' = 'TEST' collate utf8_roman_ci 
     then 'true' else 'false' end 

第一個使用utf8_bin整理,區分大小寫。第二個使用utf8_roman_ci,不區分大小寫。

的所有字符集和歸類列表可以發現:

show character set 
show collation 

latin1_swedish_ci是(MySQL的是在瑞典最初開發)的默認排序規則,這也是MariaDB的事實。

3

字符集是一組符號 和編碼。排序規則是一組 規則,用於比較 字符集中的字符。

你可以在MySQL Reference Manual找到更多的信息。

+1

@David:你在我之前發佈了參考手冊URL :) +1 – 2009-10-31 11:18:02

7

當您比較字符串時使用排序規則,例如,對它們進行分類。例如,在瑞典語中,字母「Ä」在「Z」後面,但在德語中則被視爲「AE」。所以,根據排序規則,字符串排序不同。

由於MySQL來自瑞典,瑞典語是默認設置。

+1

@balpha:尼斯解釋:P – 2009-10-31 11:19:38

3

爲什麼?什麼是默認?

latin1_swedish_ci是默認值,因爲公司的MySQL AB來自瑞典。

一般而言,對於使用ISO-8859-1(西歐)字符集的任何不太繁瑣的應用程序來說,此歸類被認爲是合理的默認值。這使得大多數變音符在一個比較顯着:

'A'='Ã' -- 1 

不過話說回來,這確實有專門針對瑞典的一些怪癖:öøåæ被視爲單獨的字母(和ä被認爲是一樣的æ ); y被視爲與ü相同的字母。它也有一些功能,與其說是瑞典剛剛錯誤:

'['='å' -- 1, huh? 
'd'='ð' -- 1, tsk. eth is nothing to do with d 

更多請見gory details

latin1_german_ci是一個更好的整理,如果你想要字母匹配而不管區別。 latin1_general_ci如果你沒有更好的排序規則。如果您根本不關心不區分大小寫的匹配,並且希望每個字符都是唯一的,請參閱latin1_general_cs

當然,這些天,人們希望你會使用utf8_排序規則之一,而不是基於latin1的任何排序規則。

相關問題