mysql collation 校对规则 查看字符集和校对规则 命令

简介

每个字符集对应若干校对规则(collation)如果不指定,会有默认校对规则

服务器有字符集、数据库有字符集、表有字符集、列有字符集,如果不指定,会继承字符集,有了字符集如果不设置校对规则,就使用字符集的默认校对规则。在做比较时,最终起作用的是列的字符集和校对规则

比如 table1.col1=table2.col2,首先会拿table1.col1的校对规则与table2.col2的校对规则,进行比较,如果校对规则不兼容,就会出现,类似

Error Code: 1267. Illegal mix of collations (utf8_general_ci,IMPLICIT) and (utf8_unicode_ci,IMPLICIT) for operation '=' 的错误

_ci  _cs   _bin解释

ci: case insensitive,大小写不敏感,不区分大小写比较

cs: case sensitive,大小写敏感,区分大小写比较

bin: binary,二进制,使用二进制比较

选择了,大小写不敏感的校对规则,比如utf8_general_ci,那么select * from table1 where name='a',那么会获取name=a或者A的数据,而不仅仅是a

命令

/*查看数据库当前的字符集和校对规则*/
show variables  like  '%character%';
show variables  like  '%collation%';

/*查看表的校对规则*/
show table status from db_name like '%table_name%' ;

/*查看列的校对规则*/
show full columns from table_name;


/*查看数据库支持的字符集和校对规则*/

show charset;或者 show character set;

show collation;

查看字符集及对应的默认校对规则,数据库版本8.0.29

SHOW CHARACTER SET;
select * from INFORMATION_SCHEMA.CHARACTER_SETS;

查看所有校对规则 ,数据库版本8.0.29

select * from INFORMATION_SCHEMA.COLLATIONS ;
 SHOW COLLATION;

 

由于多字节编码的缘故,字符个数不一定等于字节数,所以在查询时,注意区分,length是字节数,char_length是字符数

select length('你');/*结果是3,3个字节,数据库采用的utf8编码*/
select char_length('你');/*结果是1,1个字符*/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值