照合と文字セットの違いは何ですか?


24

データベースに関する一般的な質問があります。通常、データベースとの照合という用語を使用します。文字セットとどう違うのか知りたいです。照合は文字セットのサブセットだと思います。その場合、文字セットの下での多重照合の目的は何ですか。


また、参照してくださいstackoverflow.com/questions/341273/...
Sanghyunリー

回答:


27

文字セットはシンボルのリストです。あなたが比較するとASCIIをするLATIN1、とlatin1のため、あなたはすべてのアメリカ人の言葉を書くことができるようになりますlatin1のはすべて含まれているASCIIのいずれかの英語の単語を書くのに十分な文字を、。それどころか、ASCIIでは、たとえば「À」、「ë」、「õ」、「Ñ」などの文字が欠落しているため、西ヨーロッパ特有の言語のすべての単語を書くことはできません。

照合は、文字間の比較に関するものです。文字セットの文字を比較するための一連のルールを定義します。

MySQLでは、照合は多くの場合1つの言語に関連しています(たとえば、「latin1_swedish_ci」、「latin1_german1_ci」など)。選択クエリを注文すると、一部の言語(一部の照合順序)では、「ö」で始まる単語が「o」と「p」で始まる2つの単語の間に配置されます。しかし、別の照合では、この文字は完全に末尾に配置される場合があり、結果として選択が異なります。


おかげで、そのほとんどが明確になりました。多言語サイトを計画する際に、照合を選択することは重大な懸念事項だと思いますか?たとえば、照合順序が 'latin1_swedish_ci'の場合、Unicode言語の処理中に期待どおりの結果が得られません。
シェーマー

1
ユニコードを使用することをお勧めします。そうしないと、ある時点で問題が発生することになります(例として、アジア言語)。照合は、ユーザーの言語に依存します。これは、多言語ツールを使用する場合に注意する必要があるものです。
deadalnix

6

前の答えとして、文字セットは番号に割り当てられた文字(文字、数字、表意文字など)のセットです。それらを見るためには、フォント(私たちが読んだ小さな「写真」)が必要です。LatinXを使用することは重要でした。Xごとに、同じ数字(バイト)が異なる文字を参照できるためです。

今日では、エンコーディングを選択することがより重要です。標準は、Unicodeの最も成功した表現であるUTF-8(ASCIIと互換性がありますが、中国語と日本語を含むすべての言語を含む柔軟性)とW3C標準です。つまり、すべての文字セットが含まれます。

照合:これは、ラテン語から派生した昔ながらの言葉です。つまり、コピー(原稿)とオリジナルを比較して、違い(エラーまたは変更)を見つけます。過去には非常に便利でしたが、今ではほとんど考古学的です。なぜなら、私たちの文書や本はコンピューターを使用して書かれており、コピーは常に元のものと同一だからです。例:イタリア語(ラテン語から派生)には動詞「collazionare」がありますが、辞書にあり、誰も使用しません。

そのため、照合は比較演算子の動作を定義します:=、>、<、<=、> = ...

もちろん、これらの演算子は、2つの文字列が同じかどうか、または単語が別の文字列よりも「大きい」かどうかを判断するために使用されます。文字はすべての言語で同じ順序ではないため、照合順序を使用して別の単語よりも単語を大きくすることはできますが、別の単語を使用することはできません。実際の例については、[1]を参照してください。

  • 「ビン」照合は最も厳密です:SELECT "b" = "B" => FALSE

  • 「ci」照合は大文字と小文字を区別しません:SELECT "b" = "B" => TRUE

  • 「一般」はいくつかの違いを無視する傾向があります:SELECT "a" = "à" => TRUE

  • その他は1つ以上の言語に固有です。例「スウェーデン語」(スウェーデン語がしばしばデフォルトである理由がわかりません)

私はまだすべての照合の動作が詳細に記述されているウェブサイトを探しています...これらの例は私の経験によるものです。

[1] http://www.olcot.co.uk/sql-blogs/revised-difference-between-collat​​ion-sql_latin1_general_cp1_ci_as-and-latin1_general_ci_as


1
まだMySQLの一部ではスウェーデン語がデフォルトです。MySQLが95
クリスウッド
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.