文字セットと照合順序とは具体的に何を意味しますか? 質問する

文字セットと照合順序とは具体的に何を意味しますか? 質問する

MySQL のドキュメントを読むと、かなり明確です。しかし、どの文字セットを使用するかをどのように決定するのでしょうか? 照合はどのデータに影響しますか?

これら 2 つについての説明と、その選択方法について教えてください。

ベストアンサー1

MySQLからドキュメント:

文字セットは、シンボルとエンコードのセットです。照合は、文字セット内の文字を比較するためのルールのセットです。架空の文字セットの例を使用して、違いを明確にしましょう。

'A'、'B'、'a'、'b' の 4 つの文字からなるアルファベットがあるとします。各文字に番号を割り当てます。'A' = 0、'B' = 1、'a' = 2、'b' = 3 です。文字 'A' はシンボルで、数字 0 は 'A' のエンコードであり、4 つの文字とそのエンコードの組み合わせが文字セットです。

ここで、2 つの文字列値「A」と「B」を比較するとします。これを行う最も簡単な方法は、エンコードを確認することです。「A」は 0、「B」は 1 です。0 は 1 より小さいため、「A」は「B」より小さいと言えます。ここで、文字セットに照合を適用しました。照合は、一連のルール (この場合は 1 つのルールのみ) です。「エンコードを比較する」です。考えられるすべての照合の中で最も単純なこの照合をバイナリ照合と呼びます。

しかし、小文字と大文字が同等であると言いたい場合はどうでしょうか。その場合、少なくとも 2 つのルールが必要になります。(1) 小文字の「a」と「b」を「A」と「B」と同等として扱います。(2) 次に、エンコードを比較します。これを大文字と小文字を区別しない照合と呼びます。これは、バイナリ照合よりも少し複雑です。

現実の世界では、ほとんどの文字セットには多くの文字があります。「A」と「B」だけでなく、アルファベット全体、時には複数のアルファベットや数千の文字を含む東洋の書記体系、そして多くの特殊記号や句読点があります。また、現実の世界では、ほとんどの照合順序には多くのルールがあります。大文字と小文字を区別しないだけでなく、アクセントを区別しない (「アクセント」は、ドイツ語の「ö」のように文字に付けられるマークです) ことや、複数文字のマッピング (2 つのドイツ語の照合順序の 1 つでは「ö」が「OE」になるというルールなど) もあります。

おすすめ記事