您的位置:首页 > 数据库 > MySQL

mysql 对字段内容区分大小写的设置

2013-12-15 01:44 393 查看
    最近在使用mysql,发现在查询的时候不区分大小写

    即  select * from user where username like '%ab%';

          select * from user where username like '%Ab%';

          select * from user where username like '%aB%';

    这三条语句查询出来的结果是一样的,然后查看了下帮助文档,发现这跟mysql字符集对应的默认的校对规则有关。

    用 select collation;  可以查看校对规则,collation 以 "_ci"结尾的不区分大小写,以"_bin"或者"_cs"结尾的区分大小写。

    用 select charset; 可以查看字符集以及字符集对应的默认校对规则(default collation);

    发现大部分的字符集对应的默认校对规则都是不区分大小写的,只有极少数的几个字符集对应的默认校对规则是区分大小写的。

  

    我用的是uft8,可以用 select collation like '%utf%'; 查看utf8对应的校对规则发现有一个校对规则"utf8_bin"是不区分大小写

 

    已经建好的表可以用alter修改表结构指定某一列的校对规则:

    alter table table_name modify column column_name varchar(20) character set utf8 collate utf8_bin;    

    或者创建表的时候也可以指定某一列的校对规则:

    create table table_name

    (

        column_name varchar(20) character set character_name collate collation_name     

    );

    如果指定了character set character_name和collate collation_name,就采用character set character_name和collate collation_name。

    如果指定了character set character_name而没有指定collate collation,那么就采用character set character_name和character set character_name的默认校对规则。

    character set 和 collate 子句是标准的SQL。

    最后说明下我用的操作系统是window XP,mysql 版本为5.0

  


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  mysql