对 Unique 约束,校对规则不区分大小写时,怎样存储区分大小写的值?

环境 MySQL 7,使用 InnoDB 表引擎。

对唯一性约束的字段,若字符集区分大小写,校对规则不区分大小写,能存储区分大小写的值吗?

希望能达到“区分大小写的存储用户昵称,并支持搜索时不区分大小写”,看着阿里、微博的搜索工具都能做到,好羡慕啊……

简单试了一下,没成功:

CREATE TABLE `test_one` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `test` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `test` (`test`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin;

# Succeed insert
INSERT INTO `test`.`test_one` (`test`) VALUES ('name');

# Error insert: "SQL Error (1062): Duplicate entry 'nAme' for key 'test'"
INSERT INTO `test`.`test_one` (`test`) VALUES ('nAme');
阅读 4.6k
2 个回答

可以把你的测试贴出来

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题