Maison  >  Article  >  base de données  >  Mysql insère des caractères pinyin via INSERT IGNORE INTO Comment résoudre le problème ?

Mysql insère des caractères pinyin via INSERT IGNORE INTO Comment résoudre le problème ?

王林
王林avant
2023-05-31 19:55:04897parcourir

1. Préparation

Préparez un mot-clé d'importation par lots Excel, qui contient 2 mots-clés

1.pokemon

2.pokémon

Remarque : l'un de ces deux mots-clés est un e ordinaire et l'autre est une syllabeé

Préparer le script SQL de la table de base de données#🎜🎜 #

-- 导入关键词表
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='导入关键词表';

2 . Récurrence du scénario

Écrire simplement une interface d'importation, le code n'est pas joint. A noter que la méthode INSERT IGNORE INTO est utilisée pour importer sql Si le mot clé existe déjà. ne soit pas écrit sur la table. (Le champ de mot-clé est défini comme un index unique)

L'exemple d'importation SQL est le suivant

INSERT IGNORE INTO keyword_lexicon (`keyword`) VALUES ('pokemon'),('pokémon')

Une fois l'interface importée, vérifiez la table de la base de données et constatez qu'il y a une seule donnée Pokémon.

Mysql insère des caractères pinyin via INSERT IGNORE INTO Comment résoudre le problème ?

3. Résoudre le problème

En regardant la structure de la table, nous avons constaté que la règle de tri du champ de mot-clé est

#🎜🎜 #

    utf8mb4_general_ci
  • utf8mb4_general_ci

Mysql insère des caractères pinyin via INSERT IGNORE INTO Comment résoudre le problème ?

这种排序规则在识别é这种带有音节的字符时,会识别为e,导致2个关键词在通过INSERT IGNORE INTO导入后只会有一条记录,只要将排序规则改为

  • utf8mb4_bin

    mysql insérant des caractères pinyin via INSERT IGNORE INTO n'est pas valide
Ce tri. est très utile pour identifier é ce type de syllabes sera reconnu comme e, ce qui entraînera un seul enregistrement pour les deux mots-clés après avoir été importés via INSERT IGNORE INTO. Changez simplement la règle de tri en

Mysql insère des caractères pinyin via INSERT IGNORE INTO Comment résoudre le problème ?.

utf8mb4_bin

Mysql insère des caractères pinyin via INSERT IGNORE INTO Comment résoudre le problème ?

    Ensuite, importez-le à nouveau. Vérifiez. les résultats et vous constaterez que les deux données ont été insérées dans le tableau, problème résolu.
  • Summary

utf8mb4_bin est sensible à la casse et fait également la distinction entre e et é ; Ce type de caractères

utf8_genera_ci n'est pas sensible à la casse et ne fait pas non plus de distinction entre les caractères comme e et é#🎜🎜##🎜🎜##🎜🎜 # #🎜🎜#Remarque : utf8_general_cs est sensible à la casse, mais ne fait pas de distinction entre les caractères tels que e et é#🎜🎜##🎜🎜#Si vous devez distinguer les caractères avec des syllabes et que vous ne souhaitez pas être sensible à la casse , vous pouvez utiliser sql. Utilisez la fonction LOWER() lors de l'interrogation du champ correspondant #🎜🎜#

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer