这篇文章主要讲解了“mysql通过INSERT IGNORE INTO插入拼音字符无效如何解决”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“mysql通过INSERT IGNORE INTO插入拼音字符无效如何解决”吧!
准备一份批量导入关键词excel,其中包含2个关键词
1.pokemon
2.pokémon
注意:这2个关键词中一个是普通的e,一个是带音节的é
准备数据库表sql脚本
-- 导入关键词表 CREATE TABLE `keyword_lexicon` ( `id` int(10) NOT NULL AUTO_INCREMENT, `keyword` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '搜索关键词', PRIMARY KEY ("id"), UNIQUE KEY "idx_keyword" ("keyword") USING BTREE COMMENT '关键词' ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='导入关键词表';
简单写一个导入接口,代码就不附上了,需要注意的是导入sql用的是INSERT IGNORE INTO的方式,如果表中已经有该关键词了则不会写入表中。(keyword字段设为唯一索引)
导入sql例子如下
INSERT IGNORE INTO keyword_lexicon (`keyword`) VALUES ('pokemon'),('pokémon')
调接口完成导入后,查看数据库表,发现只有一条pokemon的数据。
查看表结构发现,keyword字段的排序规则为
utf8mb4_general_ci
这种排序规则在识别é这种带有音节的字符时,会识别为e,导致2个关键词在通过INSERT IGNORE INTO导入后只会有一条记录,只要将排序规则改为
utf8mb4_bin
然后再重新导入,查看结果可发现2条数据都已经插入表中,问题解决。
utf8mb4_bin是区分大小写的,也区分e和é这类字符的
utf8_genera_ci是不区分大小写的,也不区分e和é这类字符
注:utf8_general_cs是区分大小写的,但不区分e和é这类字符
如果需要区分带有音节的字符,又不想要区分大小写,可在sql查询对应字段时用LOWER()函数
感谢各位的阅读,以上就是“mysql通过INSERT IGNORE INTO插入拼音字符无效如何解决”的内容了,经过本文的学习后,相信大家对mysql通过INSERT IGNORE INTO插入拼音字符无效如何解决这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是亿速云,小编将为大家推送更多相关知识点的文章,欢迎关注!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。