MySQL 查询遇到 emoji 时为何不精确了呢?
用户表里的昵称字段是唯一,并且支持表情的,最近测试反馈说更换表情昵称总是昵称重复了。
很是奇怪,做了如下测试,创建一个表,录入一些表情
CREATE TABLE `emoji` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`emoji` varchar(255) CHARACTER SET utf8mb4 DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=13 DEFAULT CHARSET=utf8;
INSERT INTO `test`.`emoji`(`id`, `emoji`) VALUES (1, '😂😒👭😞');
INSERT INTO `test`.`emoji`(`id`, `emoji`) VALUES (2, '😁😝😝😝😯🤣🤣🧐🧐😝😯😂😒👭😞');
INSERT INTO `test`.`emoji`(`id`, `emoji`) VALUES (3, '😝😯🤣');
INSERT INTO `test`.`emoji`(`id`, `emoji`) VALUES (4, '🤣🤣');
INSERT INTO `test`.`emoji`(`id`, `emoji`) VALUES (5, '😝😯');
INSERT INTO `test`.`emoji`(`id`, `emoji`) VALUES (6, '👭😞');
INSERT INTO `test`.`emoji`(`id`, `emoji`) VALUES (7, '😝');
INSERT INTO `test`.`emoji`(`id`, `emoji`) VALUES (8, '😝😝😯🤣🤣🧐');
INSERT INTO `test`.`emoji`(`id`, `emoji`) VALUES (9, '😁👭😝');
INSERT INTO `test`.`emoji`(`id`, `emoji`) VALUES (10, '😁🧐😝');
INSERT INTO `test`.`emoji`(`id`, `emoji`) VALUES (11, '😁😂😝');
INSERT INTO `test`.`emoji`(`id`, `emoji`) VALUES (12, '😁👭🧐');
执行查询
select id, emoji, MD5(emoji), TO_BASE64(emoji), CHARSET(emoji), HEX(emoji) from emoji where emoji = '😯🤣👭';
结果出了多条记录,为何会存在这种情况呢?