我有一个包含分配表的数据库。该表如下所示:
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
编辑2
我将分配表排序规则更改为:latin1_general_cs,并尝试在 MySql 查询编辑器中手动查询,但我仍然得到 A 和返回结果。然后我尝试将表格的排序规则调整为与表格相同的值。我做错了什么还是应该调整工作?
编辑3
好的,我刚刚修复了它。我没有使用 latin1_general_cs,而是使用了 utf8_bin。似乎 utf8 没有区分大小写的排序规则 :) 感谢 JB Nizet 为我指明了正确的方向!