gpt4 book ai didi

java - 使用 MySql Springdata 和 Hibernate 的大写和小写问题

转载 作者:行者123 更新时间:2023-11-29 07:00:16 24 4
gpt4 key购买 nike

我有一个包含分配表的数据库。该表如下所示:

ID | CHARACTER_ASS | TYPE_ASS

字符列中存储字母和数字。 IE。 'A','a',“Aa”。 “AA”, 1 等...现在,当我在查询控制台中执行以下查询时:

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

它将返回我数据库中的小写条目和大写条目。现在我一直在寻找这个问题的答案,有人告诉我这可能是因为我在 Windows 操作系统上运行。我查了一下,只能发现命名表名时有/没有小写字母 (?) 可能有问题。

另一个问题是我使用的是 spring 数据。在 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 和 back。然后我尝试将表格的排序规则调整为与我对表格所做的相同的值。我是做错了什么还是应该调整工作?

EDIT3

好的,我刚刚修复了它。我没有使用 latin1_general_cs,而是使用了 utf8_bin。似乎 utf8 没有区分大小写的排序规则 :) 谢谢 JB Nizet 为我指明了正确的方向!

最佳答案

创建表时指定区分大小写的排序规则:

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

关于java - 使用 MySql Springdata 和 Hibernate 的大写和小写问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10557984/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com