2011-02-02 1 views
12

MySQLサーバ上のデータベース全体に対して、デフォルトで大文字と小文字の区別を有効または無効にするコマンドは何ですか?私はCOLLATEステートメントを認識していますが、実行しているすべてのSQLステートメントにこれを配置する必要があるようです。これをグローバルに設定するオプションはありますか?MySQLが大文字と小文字を区別するように設定する方法

+0

コンテキスト何ですか?例えばあなたが取り組んでいる言語ですか? – yoda

答えて

27

CREATE TABLEステートメントの一部として、データベースの作成レベルとテーブル作成レベルの両方で照合順序を設定できます。

は、データベース全体の照合順序を設定するには、使用することができます。

CREATE DATABASE test_database CHARACTER SET utf8 COLLATE utf8_general_cs; 

また、ALTER DATABASEを経由して、既存のデータベースに照合順序を変更することができます。 (詳細については、MySQLのDatabase Character Set and Collationマニュアルエントリを参照してください。)

、唯一の単一のテーブルの大文字小文字を区別して処理する必要がありますしかし、もし、あなたは、単に使用することができます

DROP TABLE IF EXISTS test_table; 
CREATE TABLE test_table (
    test_id bigint unsigned NOT NULL auto_increment, 
    ... 

    PRIMARY KEY test_id (test_id), 
    ... 
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE utf8_general_cs; 

(大文字小文字を区別しないが、「utf8_general_ci」であります。)

最後に、メインのMySQL Character Set Supportマニュアルセクションは、おそらくすぐに見直す価値があります。 (character sets and collations supported by MySQLを列挙し、et the character set/collation at the server levelなどを教えてください)

+6

また、 'utf8_bin'もよく使われます。 – Unode

+0

@Unodeはい、utf8_binは "á"を "a"と等しくしていません。 –

+0

@middaparkaと私の前のコメントとの組み合わせでは、に。しかし、これらの問題のほとんどは、特定のエンコーディングとロケール設定に関連しています。 – Unode

1

ここでは、特定の列に対してのみ照合を変更し、大文字と小文字が区別され、表全体またはデータベース。それは誰かがこれを探しているのを助けることを望みます。

この問合せは、試すことができます

ALTER TABLE table_name MODIFY column_name column_datatype COLLATE utf8_bin; 
関連する問題