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

    最近在使用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

  


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值