Copia il codice nella pubblicazione vera e propria e fornisci il codice che hai provato a utilizzare per risolvere il problema.
La funzione substring_index restituisce una parte di una stringa con qualche delimitatore (qui una virgola), e quando viene passato un indice negativo inizia a cercare le corrispondenze dal lato opposto, quindi -1
prende un elemento da quelli che altrimenti sarebbero elenchi di più elementi (per index>=2).
Secondo la nostra discussione, ho ottimizzato il modo in cui l'ho fatto e ho mostrato un esempio di utilizzo dell'incremento automatico. (Questo viene eseguito nella parte 'build schema' di 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;
documentazione della funzione di sottostringa Possibile duplicazione di questa domanda