CREATE TABLE `table` (
`id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8nb4_bin NOT NULL DEFAULT '',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
在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有唯一约束的列上插入两行值'A'和'a',Mysql会认为它是相同的,而在oracle中就不会。就是mysql默认的字段值不区分大小写?这点是比较令人头痛的事。直接使用客户端用sql查询数据库。 发现的确是大小不敏感 。
通过查询资料发现需要设置collate(校对) 。
collate规则:
关于字符集与校验规则,mysql能:
强制区分大小写,可以通过binary关键字,方法有两种:
让mysql查询时区分大小写
在建表时加以标识
或
在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) ;