最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

详解MySQL查询时区分字符串中字母大小写的方法_MySQL

来源:动视网 责编:小采 时间:2020-11-09 20:18:25
文档

详解MySQL查询时区分字符串中字母大小写的方法_MySQL

详解MySQL查询时区分字符串中字母大小写的方法_MySQL:如果你在mysql有唯一约束的列上插入两行值'A'和'a',Mysql会认为它是相同的,而在oracle中就不会。就是mysql默认的字段值不区分大小写?这点是比较令人头痛的事。直接使用客户端用sql查询数据库。 发现的确是大小不敏感 。通过查询资料发现
推荐度:
导读详解MySQL查询时区分字符串中字母大小写的方法_MySQL:如果你在mysql有唯一约束的列上插入两行值'A'和'a',Mysql会认为它是相同的,而在oracle中就不会。就是mysql默认的字段值不区分大小写?这点是比较令人头痛的事。直接使用客户端用sql查询数据库。 发现的确是大小不敏感 。通过查询资料发现

如果你在mysql有唯一约束的列上插入两行值'A'和'a',Mysql会认为它是相同的,而在oracle中就不会。就是mysql默认的字段值不区分大小写?这点是比较令人头痛的事。直接使用客户端用sql查询数据库。 发现的确是大小不敏感 。
通过查询资料发现需要设置collate(校对) 。
collate规则:

  • *_bin: 表示的是binary case sensitive collation,也就是说是区分大小写的

  • *_cs: case sensitive collation,区分大小写

  • *_ci: case insensitive collation,不区分大小写

  • 关于字符集与校验规则,mysql能:

    1、使用字符集来存储字符串,支持多种字符集;
    2、使用校验规则来比较字符串,同种字符集还能使用多种校验规则来比较;
    3、在同一台服务器、同一个数据库或者甚至在同一个表中使用不同字符集或校对规则来混合组合字符串;
    4、可以在任何级别(服务器、数据库、表、字段、字符串),定义不同的字符集和校验规则。

    强制区分大小写

    可以通过binary关键字,方法有两种:
    第一种:让mysql查询时区分大小写

    select * from usertable where binary id='AAMkADExM2M5NjQ2LWUzYzctNDFkMC1h';

    第二种:在建表时加以标识

    create table `usertable`( 
     `id` varchar(32) binary, 
     PRIMARY KEY (`id`) 
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

    CREATE TABLE `usertable` ( 
     `id` varchar(32) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT '', 
     PRIMARY KEY (`id`) 
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

    在mysql中,存在大小写问题的地方还有:
    (1) 关键字: 不区分大小写 select * fRom table_name 和 select * from table_name 效果是一样的
    (2) 标示符(如数据库名称和表名称):不区分大小写。如存在表users,那么select * from users和select * from uSers 效果一样。网上说这跟操作系统有关,在所有Unit操作系统(除了使用HFS+的Mac OS 之外)上都是区分大小写的,而在windows上是不区分大小写的。(网上的这一说法没有验证过,我在windows server2003上是不区分大小写的)
    (3) 表的别名:不区分大小写 select m.* from users m where M.username = 'aa';
    (4) 列的别名:不区分大小写 select uName from (select username as uname from users where id = 768) ;

    文档

    详解MySQL查询时区分字符串中字母大小写的方法_MySQL

    详解MySQL查询时区分字符串中字母大小写的方法_MySQL:如果你在mysql有唯一约束的列上插入两行值'A'和'a',Mysql会认为它是相同的,而在oracle中就不会。就是mysql默认的字段值不区分大小写?这点是比较令人头痛的事。直接使用客户端用sql查询数据库。 发现的确是大小不敏感 。通过查询资料发现
    推荐度:
    • 热门焦点

    最新推荐

    猜你喜欢

    热门推荐

    专题
    Top