MIN()和MAX()如何处理MySQL中的CHAR/VARCHAR字符串



我一直在使用这里的世界数据库(InnoDB)来深入了解MySQL。

我输入了以下基本查询:

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

似乎MIN()和MAX()处理Name中CHAR字符串的方式是按字母顺序排列的,其中A是最小值,Z是最大值,依此类推。

有人能解释一下幕后发生了什么,以及为它们分配了什么值字符串,以便以这种方式进行排序吗?如果字符串同时包含字母字符和整数,或者包含特殊字符,会发生什么情况?

非常感谢Insight。

MySQL字符串比较,技术上称为排序规则,取决于区域设置。我建议阅读关于排序规则的第10.1.1节、关于MySQL中排序规则的10.1.2节和关于排序规则问题的10.1.7节。在…上http://collation-charts.org/您可以找到有关各个排序规则的详细信息,例如名为latin1_general_ci的排序规则(其中_ci代表不区分大小写)。调用MAXMIN时使用的排序规则应该是有问题列的排序规则,除非使用类似MAX(Name COLLATE latin1_german2_ci)的公式指定不同的排序规则。

最新更新