2013-12-14 40 views
6

我一直在玩世界數據庫(InnoDB)發現here以獲得更多洞察MySQL。MIN()和MAX()如何在MySQL中的CHAR/VARCHAR字符串上工作?

我輸入了以下基本查詢:

SELECT COUNT(Name), MIN(Name), MAX(Name) 
FROM Country 
GROUP BY Continent 

看來,這樣MIN()和MAX()在名稱的CHAR字符串的工作是按字母順序排列,其中A爲最小值和Z是最偉大的等等。

任何人都可以解釋幕後發生了什麼事情,並且正在分配什麼值字符串以便以這種方式進行排序?字符串和整數或特殊字符串會發生什麼情況?

Insight非常感謝。

+0

它使用的是字典順序 –

+0

什麼不清楚嗎? B-Tree索引如何工作? (如果它是當然創建的) - 或者MySQL將如何比較字符串? –

+0

@AlmaDo基本上,MySQL如何比較字符串。例如,我想知道分配給A的一個比B小的值,以及特殊字符和數字在那個範圍內的情況。 –

回答

1

MySQL字符串比較,技術上稱爲整理,是區域設置相關的。我建議閱讀章節10.1.1上的排序規則,10.1.2排序規則MySQL和10.1.7排序問題。在http://collation-charts.org/上,您可以找到有關各個排序規則的詳細信息,例如稱爲latin1_general_ci(其中_ci代表不區分大小寫)。當您撥打MAXMIN時,使用的排序規則應該是相關列的排序規則,除非您使用MAX(Name COLLATE latin1_german2_ci)等公式指定不同的排序規則。