Veuillez copier votre code dans la publication réelle et fournir le code que vous avez essayé d'utiliser pour résoudre le problème.
La fonction substring_index renvoie une partie d'une chaîne avec un délimiteur (ici une virgule), et lorsqu'un index négatif est passé, elle commence à rechercher des correspondances du côté opposé, donc -1
récupère un élément de ce qui serait autrement des listes multi-éléments (pour index>=2).
Selon notre discussion, j'ai modifié la façon dont j'ai procédé et montré un exemple d'utilisation de l'auto-incrémentation. (Ceci est exécuté dans la partie 'build schema' de fiddle.)
create table TAGS
(`T_ID` int auto_increment primary key, `T_Name` varchar(18))
;
insert ignore into TAGS (T_Name)
SELECT
SUBSTRING_INDEX(RES_Tags, ',', 1) as X
FROM RESOURCES
;
insert ignore into TAGS (T_Name)
SELECT
SUBSTRING_INDEX(
SUBSTRING_INDEX(RES_Tags, ',', 2)
,',',-1)
FROM RESOURCES
;
insert ignore into TAGS (T_Name)
SELECT
SUBSTRING_INDEX(
SUBSTRING_INDEX(RES_Tags, ',', 3)
,',',-1) as X
FROM RESOURCES
;
insert ignore into TAGS (T_Name)
SELECT
SUBSTRING_INDEX(
SUBSTRING_INDEX(RES_Tags, ',', 4)
,',',-1) as X
FROM RESOURCES
;
insert ignore into TAGS (T_Name)
SELECT
SUBSTRING_INDEX(
SUBSTRING_INDEX(RES_Tags, ',', 5)
,',',-1) as X
FROM RESOURCES
;
insert ignore into TAGS (T_Name)
SELECT
SUBSTRING_INDEX(
SUBSTRING_INDEX(RES_Tags, ',', 6)
,',',-1) as X
FROM RESOURCES
;
create table New_TAGS like TAGS;
insert into New_TAGS (T_Name)
select distinct trim(T_Name)
from TAGS;
drop table TAGS;
rename table NEW_TAGS to TAGS;
documentation de la fonction substring Duplication possible de cette question