mysql 大小写区分问题

我这说的是在执行sql时,对数据区分大小写。

如果不区分大小写,那么sql1:select * from testtable where name='abc';  和 sql2 : select * from testtable where name = 'ABC'; 搜索效果是一样的。这样显然不合理。

这次遇到过这样的情况,所以备忘一下。

原因就是 table 的 “collation” 是 "utf8_general_ci"的。这个可以通过Navicat 工具看表属性,有一个叫做“整理”的属性。这个 collation 中文叫做  核对集 。

不知其他情况,我这编码全部使用的是 utf8,的字符集,那么默认的核对集就是 utf8_general_ci,我不想要这个,因为不区分大小写,我需要它变成区分大小写的 utf8_bin 。

如果数据库还没有建立,那么可以在 (linux) /etc/my.cnf  的[mysqld]  下,写上:

collation_server=utf8_bin  。如果已经存在这个key,那修改它。如此,再建库建表,就都是utf8_bin 的核对集了。

如果表已经建立好,需要修改核对集,那么使用下面的语句:

alter table test convert to character set utf8 collate utf8_bin;

这样既可。对所有表进行逐一修改。

注意,如果遇到某个表被别的表  foreign references 了的话,就需要先执行语句:

SET FOREIGN_KEY_CHECKS=0;

然后再执行 上面的 alter 语句,否则会报错。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值