2012-05-11 58 views
0

私は割り当てテーブルを含むデータベースを持っています。テーブルは次のようになります。MySqlを使用した大文字と小文字の問題SpringdataとHibernate

ID | CHARACTER_ASS | TYPE_ASS 

文字列の中に文字と数字が格納されます。つまり'A'、 'a'、 'Aa'。 「AA」、1等... 今、私は私のクエリコンソールで次のクエリを実行すると:

select * from assignment a where a.CHARACTER_ASS = 'A' 

それは私のデータベース内の小文字のエントリと同様に大文字のエントリを返します。今私はこの質問への答えを探していました。誰かが私にWindows OS上で実行している可能性があると言いました。私はこれを見て、小文字(?)の有無にかかわらずテーブル名に名前を付けることに問題があることがわかっただけです。

他の問題の1つは、私がスプリングデータを使用していることです。春のデータでは、私はクエリの直接のコントロールを持っていないので、私は春のデータのための特定の修正があるのだろうかと思っています。

私はこの問題について、あなたの答えを聞きたいのです:)事前

EDITで

おかげで

私のショーは、TABLEの割り当てを作成:

CREATE TABLE `assignment` (
    `ID` int(11) NOT NULL AUTO_INCREMENT, 
    `CHARACTER_ASS` varchar(45) NOT NULL, 
    `TYPE_ASS` int(11) NOT NULL, 
    PRIMARY KEY (`ID`) 
) ENGINE=InnoDB AUTO_INCREMENT=17 DEFAULT CHARSET=utf8 

EDIT2

Assignmentテーブルの照合順序をlatin1_general_csに変更し、MySqlクエリエディタで手動でクエリを実行しようとしましたが、結果としてAとバックを取得しました。 次に、テーブルの照合順序を、テーブルと同じ値に調整しようとしました。 何か間違っているのですか?調整が必要ですか?

EDIT3

[OK]を私はちょうどそれをfixxed。 latin1_general_csを使用する代わりに、私はutf8_binを使用しました。 utf8には大文字と小文字の区別がありません:) JB Nizetが正しい方向に向いてくれてありがとう!

+0

をここで私が得る最初の結果です"mysqlの大文字と小文字を区別"のためのグーグル:http://dev.mysql.com/doc/refman/5.0/en/case-sensitivity.html –

+0

私もそれを発見したが、私はspringdataの原因を助けてくれません。私はspringdataでCOLLATEを使用する手がかりがありません –

+0

照合を使わないでください。バイナリ照合を使用するようにテーブルを構成します。 –

答えて

1

あなたがテーブルを作成するときに大文字と小文字を区別する照合順序を指定します。デフォルトの照合は、データベース・レベルで、グローバルに設定することができ

CREATE TABLE assignment (
    ID int(11) NOT NULL AUTO_INCREMENT, 
    CHARACTER_ASS varchar(45) NOT NULL, 
    TYPE_ASS int(11) NOT NULL, 
    PRIMARY KEY (ID) 
) ENGINE=InnoDB AUTO_INCREMENT=17 DEFAULT CHARSET=utf8, COLLATE=latin1_general_cs 

注:http://dev.mysql.com/doc/refman/5.0/en/charset-database.html

+0

これはすべてlatin1_general_csを使用することですか?これをすべてのプロジェクトのデフォルト設定として使用できますか?またはこれを使用することに欠点があります –

+0

コードを実行すると、次のエラーが表示されます。エラーコード:1253. COLLATION 'latin1_general_cs'はCHARACTER SET 'utf8'には無効です –

+0

あなたに適した照合順序を選択してください。しかし、文字列の比較で大文字と小文字を区別したい場合、照合は大文字小文字を区別するかバイナリで行う必要があります。 http://dev.mysql.com/doc/refman/5.0/en/charset-mysql.htmlを参照してください。ページの右側にあるリンクをクリックしてください。 show collat​​ionステートメントはすべての照合とその文字セットを表示します –

0

このフィールドの文字セットと照合は何ですか?

SHOW CREATE TABLE tablenameを実行できますか。

+0

私の質問が更新されました –

関連する問題