我有一个包含Assignment表的数据库。该表如下所示:
ID | CHARACTER_ASS | TYPE_ASS
在字符列中存储字母和数字。 IE浏览器。 'A','a',“Aa”。 “AA”,1等...... 现在,当我在查询控制台中执行以下查询时:
select * from assignment a where a.CHARACTER_ASS = 'A'
它将返回我的数据库中的小写条目和大写条目。现在我一直在寻找这个问题的答案,有人告诉我这可能是因为我在Windows操作系统上运行。我看了这个,只能发现用/不用小写(?)命名表名可能有问题。
其他一个问题是我正在使用弹簧数据。在spring数据中我没有对查询的直接控制,所以我想知道是否有针对spring数据的特定修复。
我想听听你对这个问题的答案:)
提前致谢
修改
我的SHOW CREATE 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表Collation更改为:latin1_general_cs,我尝试在MySql查询编辑器中手动查询,但我仍然得到A和后退结果。 然后我尝试将表的排序规则调整为与表格相同的值。 我做错了什么还是调整工作?
EDIT3
好的,我只是修复了它。而不是使用latin1_general_cs我使用了utf8_bin。似乎utf8没有Case Sensitive Collation :)谢谢JB Nizet指出我正确的方向!
答案 0 :(得分: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
答案 1 :(得分:0)
该字段的字符集和整理是什么?
你可以执行SHOW CREATE TABLE tablename;