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个字符*/

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
校对规则(collation)是MySQL中用来比较和排序字符集规则校对规则的作用是定义字符在排序时的顺序和比较方式,以及在查询时如何匹配和比较字符。校对规则一般是与字符集(character set)一起使用的,可以决定字符集中字符的排序方式。 根据比较方式不同,MySQL校对规则可以分为以下三类: 1.二进制校对规则(binary collation):以二进制方式比较字符,不考虑字符的大小写和重音符号等差别,适用于区分大小写和重音符号的场景。 2.字符集校对规则(non-binary collation):以语言特定的方式比较字符,考虑大小写和重音符号等差别,适用于不区分大小写和重音符号的场景。 3.Unicode校对规则(unicode collation):以Unicode编码方式比较字符,支持多种语言的字符排序,适用于多语言环境下的场景。 根据排序方式不同,MySQL校对规则可以分为以下两类: 1.单字节校对规则(single-byte collation):以字节为单位比较字符,适用于单字节字符集如latin1的场景。 2.多字节校对规则(multi-byte collation):以字符为单位比较字符,适用于多字节字符集如utf8的场景。 根据语言和区域不同,MySQL校对规则还可以进一步细分为各种不同的语言和地区的校对规则,如英文校对规则、日文校对规则、中文校对规则等等。 在创建表或索引时,可以通过指定校对规则来定义字符的排序方式。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值