1

割り当てテーブルを含むデータベースがあります。テーブルは次のようになります。

ID | CHARACTER_ASS | TYPE_ASS

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

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

データベース内の小文字のエントリと大文字のエントリも返します。今、私はこの質問に対する答えを探していましたが、誰かが私がWindowsOSで実行しているためかもしれないと私に言いました。これを調べたところ、小文字(?)の有無にかかわらずテーブル名の命名に問題がある可能性があることがわかりました。

他の問題の1つは、春のデータを使用していることです。Springデータでは、クエリを直接制御できないため、Springデータに特定の修正があるかどうか疑問に思っています。

この問題に関するあなたの答えを聞きたいです:)

前もって感謝します

編集

私のSHOWCREATETABLE割り当て:

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

割り当てテーブルの照合をlatin1_general_csに変更し、MySqlクエリエディターで手動でクエリを実行しようとしましたが、結果としてAとバックが返されます。次に、テーブルの照合を、テーブルで行ったのと同じ値に調整しようとしました。私は何か間違ったことをしていますか、それとも調整は機能するはずですか?

EDIT3

わかりました、私はそれを修正しました。latin1_general_csを使用する代わりに、utf8_binを使用しました。utf8には大文字と小文字を区別する照合がないようです:)正しい方向に私を向けてくれてありがとうJBNizet!

4

2 に答える 2

2

テーブルを作成するときに、大文字と小文字を区別する照合を指定します。

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

于 2012-05-11T20:45:16.383 に答える
0

そのフィールドの文字セットと照合順序は?

SHOW CREATE TABLE tablename; を実行していただけますか。

于 2012-05-11T20:30:08.767 に答える