18988093961

当前位置:
gorm操作MySql数据库的方法
来源: | 作者:kmlzb | 发布时间: 2023-08-09 | 171 次浏览 | 分享到:

gorm是一种用于操作MySql数据库的强大工具。使用gorm进行查询时,你可能会遇到一个问题:账户名A和a被认为是相同的。这是因为mysql默认不区分大小写。



1.问题产生的原因



MySQL在Windows下对大小写不敏感。



而在Linux下,数据库名、表名、列名和别名的大小写规则是这样的:



1、数据库名和表名是严格区分大小写的;



2、表的别名也是严格区分大小写的;



3、列名和列的别名在任何情况下都是忽略大小写的;



4、变量名也是严格区分大小写的;



这导致在查询字符串时,MySQL是不区分大小写的。在编译MySQL时,通常使用ISO-8859字符集作为默认字符集,这种字符集对大小写不敏感。因此,在比较过程中,中文编码字符的大小写转换会导致这种现象。



2、mysql中的排序规则



。。字符串中的每一个字符使用二进制数据进行存储,并且能区分大小写。utf8_genera_ci不考虑大小写,ci代表大小写不敏感。utf8_general_cs能区分大小写,cs代表大小写敏感。(需要注意的是,在Mysql5.6.10版本中,不支持utf8_genral_cs!!!



3、解决方法



1、使用binary关键字



直接在sql查询语句中,在要查询的字段前面加上binary关键字。(不建议使用)



1、在每个条件前面加上binary关键字



1 select * from user where binary username = 'admin' and binary password = 'admin';



2、将参数用binary('')来包围起来。



。1、对于用户表,查询所有符合以下条件的记录:用户名中包含二进制的"admin",并且密码中包含二进制的"admin"。



2、改变排序规则属性



在创建表时,可以直接将表的排序规则属性设为utf8_general_cs或utf8_bin;如果表已创建,则可以直接修改字段的排序规则属性为utf8_general_cs或utf8_bin。