问题描述
在mysql中使用语句“select * from table_name where character='⺎' ”的时候返回了 '尢','⼪','⺎' 和'⺐'
问题出现的环境背景及自己尝试过哪些方法
我一开始使用的mysql5.7,字符集为utf8mb4,这样的情况更加普遍,
当我升级到mysql8.0以后,已经有部分可以被区分开了但还是有例如题目中所说的 '尢','⼪','⺎' 和'⺐'被认为是同一个字符
相关代码
// 请把代码文本粘贴到下方(请勿用图片代替代码)
建表语句
drop database if exists `chinese_sort`;
create database `chinese_sort` default charset utf8mb4 collate utf8mb4_unicode_ci;
use `chinese_sort`;
create table `chinese_character_dict_standard_version`(
`id` bigint primary key auto_increment,
`character` char(1) not null comment '字',
`chinese_pinyin` varchar(50) default '' comment '拼音',
`stroke_num` tinyint not null default 0 comment '笔画数',
`four_corner_num` varchar(5) default '' comment '四角号码',
`unicode` varchar(12) not null comment 'unicode码',
`utf16` varchar(12) not null comment 'utf16码'
);
insert into chinese_character_dict_standard_version(`character`, unicode, utf16)
values('尢','5c22','\u5c22'),
('⼪','2f2a','\u2f2a'),
('⺎','2e8e','\u2e8e'),
('⺐','2e90','\u2e90');
查询语句
SET NAMES utf8mb4 collate utf8mb4_unicode_ci;
select * from chinese_character_dict_standard_version
where `character` ='⺎';
你期待的结果是什么?实际看到的错误信息又是什么?
期望返回的仅仅是'⺎'
但是却返回了 '尢','⼪','⺎' 和'⺐'
补充
上述的四个字符不是我直接用sql插入的,这里是方便复现所以直接插入的,
我是通过unicode码生成的然后再通过java代码进行的插入
where BINARY
character
='⺎';