2012-04-05 6 views
4

データベースを作成するときに、デフォルトのCollat​​eを選択するよう求められます。テーブルを作成するときに、Collat​​eを選択するよう求められます。 utf8_general_ciまたは... latin ...?どちらが正しいかを区別するための基礎は何ですか?MySQL - Collat​​e

+1

によって示すことができる* _ciあなたはWHEREフィールド「%ABC%」のような '、それはbabcかのどちらかにマッチするような何かを行う場合意味、大文字と小文字を区別しませんBaBC。 –

+1

今日は通常utf8が必要なので、ラテンアルファベットだけでなく、あらゆる種類のスクリプトを保存することができます。クライアントアプリケーション(PHPなど)も同じエンコーディングを使用していることを確認してください。 – knittl

+0

ありがとうございます。何があなたをciまたはcsを選ぶようにしますか?私はcsのための人生の例を考えることができません.. – lunar

答えて

12

collationは、文字のソート順を決定します。これは、文字セット内の文字を比較するためのルールセットです。任意のcharacter setには常に少なくとも1つの照合があります。照合名CICS、及びビンの端部手段大文字と小文字を区別しない、大文字と小文字を区別バイナリ、それぞれ。 utf8_binのようなバイナリ照合は、文字列の数値に基づいてバイナリ文字列の比較を行うため、通常は大文字と小文字が区別されます。

これは、aとAが違わない大文字小文字を区別しない選択クエリを作成する場合は、ciで終わる照合を使用する必要があることを意味します。大文字と小文字を区別するクエリを作成する場合は、aとAが異なる場合は、csまたはbinで終わる照合を使用する必要があります。

何も選択されていない場合、標準レベルが適用されます。 MySQLでの照合の様々なレベルがあり、これらは例えば

mysql> show variables like '%collation%'; 
+----------------------+-------------------+ 
| Variable_name  | Value    | 
+----------------------+-------------------+ 
| collation_connection | utf8_general_ci | 
| collation_database | latin1_swedish_ci | 
| collation_server  | latin1_swedish_ci | 
+----------------------+-------------------+ 
+1

ありがとう。 2番目の例では、 'cs'になるはずです。 – lunar

+0

はい、タイプミスを修正しました – 0x4a6f4672