mysql中语句where条件为= '尢'的时候返回了 '尢','⼪','⺎' 和'⺐'

问题描述

在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代码进行的插入

阅读 1.7k
2 个回答

where BINARY character ='⺎';

https://stackoverflow.com/que...
utf8_unicode_ci will consider any characters with the same collation weight as equal for purposes of equality comparison
在进行相等比较时,utf8_unicode_ci会认为排序权重的字符都是相等的
试试把utf8mb4_unicode_ci改成utf8mb4_general_ci

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