【发布时间】:2012-05-20 10:35:26
【问题描述】:
我有一个包含分配表的数据库。该表如下所示:
ID | CHARACTER_ASS | TYPE_ASS
字符列内存储字母和数字。 IE。 “A”、“A”、“A”。 “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
我将分配表排序规则更改为:latin1_general_cs,并尝试在 MySql 查询编辑器中手动查询,但结果仍然是 A 和返回。 然后我尝试将表格的排序规则调整为与表格相同的值。 我做错了什么还是应该调整工作?
EDIT3
好的,我刚刚修复了它。我没有使用 latin1_general_cs,而是使用了 utf8_bin。似乎 utf8 没有区分大小写的排序规则 :) 感谢 JB Nizet 为我指明了正确的方向!
【问题讨论】:
-
这是我在谷歌上搜索“mysql case-sensitive”时得到的第一个结果:dev.mysql.com/doc/refman/5.0/en/case-sensitivity.html
-
我也发现了,但它不会帮助我导致 springdata。我不知道将 COLLATE 与 springdata 一起使用
-
不要使用整理。将表配置为使用二进制排序规则。
-
您能否发布一个示例,以便我为您投票并接受您的回答(如果可行:))
标签: java mysql hibernate jpa spring-data