sql >> データベース >  >> RDS >> Oracle

コレーションがわかりませんか? (Mysql、RDBMS、文字セット)

    データベース照合の主なポイントは、データの並べ替えと比較の方法を決定することです。

    文字列比較の大文字と小文字の区別

    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がサポートする文字セットと照合
    • 照合の効果の例
    • 照合の問題


    1. SQLAlchemyORMを使用した一括挿入

    2. リレーショナルデータベースの行を削除または無効にする必要がありますか?

    3. Psycopg2はプレースホルダーを使用してテーブルに挿入します

    4. MariaDBで大文字を含む行を見つける4つの方法