2013-12-14 5 views
6

私は世界のデータベース(InnoDB)で遊んでいて、hereが見つかったので、MySQLの詳細を知ることができます。MIN()とMAX()はMySQLのCHAR/VARCHAR文字列でどのように動作しますか?

私は、次の基本的なクエリ入力された:MIN()とMAX()は名前にCHAR列に仕事のやり方はAが最小値であり、Zはアルファベット順であると思われ

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

を最大のものである。

舞台裏で何が起こっているのか、そのような方法で並べ替えるために割り当てられている値の文字列は誰でも説明できますか?アルファベット文字と整数の両方の文字列、または特殊文字の場合はどうなりますか?

洞察が大いにありがたいです。

+0

辞書順を使用しています –

+0

あなたには不明な点がありますか? Bツリーインデックスはどのように機能していますか? (もちろん作成されていれば)、あるいはMySQLが文字列をどのように比較するのか? –

+0

@ AlmaDo MySQLは文字列をどのように比較しますか。たとえば、AにBより小さい値を割り当て、特殊文字と数字がその尺度に入る場所を知りたかったのです。 –

答えて

1

技術的には照合と呼ばれるMySQL文字列の比較は、ロケールによって異なります。私は一般的な照合のセクション10.1.1を読んで、照合の問題について10.1.7の照合については10.1.2を読んでください。 http://collation-charts.org/には、個々の照合順序の詳細が表示されます。 latin1_general_ciと呼ばれるもの(_ciは大文字と小文字を区別しません)。 MAXMINを呼び出すときに使用される照合は、MAX(Name COLLATE latin1_german2_ci)のような形式を使用して別の照合を指定しない限り、問題の列の照合である必要があります。