データベース照合の主なポイントは、データの並べ替えと比較の方法を決定することです。
文字列比較の大文字と小文字の区別
SELECT "New York" = "NEW YORK";`
大文字と小文字を区別しない照合の場合はtrueを返します。大文字と小文字を区別する場合はfalse。
_ci
で判断できる照合はどれですか および_cs
照合の名前の接尾辞。 _bin
照合はバイナリ比較を行います(文字列は100%同一である必要があります)。
ウムラウト/アクセント付き文字の比較
照合により、アクセント付き文字が文字列比較でラテン語ベースの対応する文字として扱われるかどうかも決まります。
SELECT "Düsseldorf" = "Dusseldorf";
SELECT "Èclair" = "Eclair";
前者の場合はtrueを返します。後者ではfalse。それぞれの照合の説明を読んで、どれがどれであるかを確認する必要があります。
文字列の並べ替え
照合は、文字列の並べ替え方法に影響します。
たとえば、
-
ウムラウト
Ä Ö Ü
フィンランド語/スウェーデン語のアルファベットlatin1_swedish_ci
のアルファベットの最後にあります -
それらは
A O U
として扱われます ドイツ語のDIN-1ソート(latin_german1_ci
) -
AE OE UE
として ドイツ語のDIN-2ソート(latin_german2_ci
)。 (「電話帳」の並べ替え) -
latin1_spanish_ci
で 、「ñ」(n-チルダ)は、「n」と「o」の間の個別の文字です。
これらのルールにより、ラテン文字以外の文字が使用されている場合、並べ替え順序が異なります。
実行時に照合を使用する
テーブルと列の照合を選択する必要がありますが、パフォーマンスの低下を気にしない場合は、COLLATE
を使用して、実行時にデータベース操作を特定の照合に強制できます。 キーワード。
これにより、table
が並べ替えられます name
による ドイツ語のDIN-2ソートルールを使用した列:
SELECT name
FROM table
ORDER BY name COLLATE latin1_german2_ci;
COLLATE
の使用 クエリ中に各列を変換する必要があるため、実行時にパフォーマンスに影響があります。したがって、これを適用する前によく考えて、大きなデータセットを実行してください。
MySQLリファレンス:
- MySQLがサポートする文字セットと照合
- 照合の効果の例
- 照合の問題