sql >> Database teknologi >  >> RDS >> Mysql

mySQL>> Normalisering af et kommasepareret felt

Kopier venligst din kode ind i det faktiske opslag, og angiv den kode, du har forsøgt at bruge til at løse problemet.

Substring_index-funktionen returnerer en del af en streng med et eller andet skilletegn (her et komma), og når et negativt indeks sendes, begynder den at søge efter match fra den modsatte side, så -1 griber ét element fra, hvad der ellers ville være multi-item lister (for indeks>=2).

I henhold til vores diskussion har jeg justeret, hvordan jeg gjorde dette, og viste et eksempel på brug af automatisk stigning. (Dette køres i 'build schema'-delen af ​​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;

dokumentation af understrengsfunktionen Mulig duplikering af dette spørgsmål



  1. SQL-kodehjælp til at finde seneste post baseret på ID

  2. Opdag humørikoner i streng

  3. Hvordan udvides decimaler af et tal til et minimum i Oracle PLSQL?

  4. mysql-forespørgselsresultat i php-variabel