sql >> Databáze >  >> RDS >> Mysql

mySQL>> Normalizace pole odděleného čárkami

Zkopírujte prosím svůj kód do skutečného příspěvku a uveďte kód, který jste se pokusili použít k vyřešení problému.

Funkce substring_index vrací část řetězce s nějakým oddělovačem (zde čárkou), a když je předán záporný index, začne hledat shody z opačné strany, takže -1 vezme jednu položku z toho, co by jinak bylo seznamem více položek (pro index>=2).

V naší diskusi jsem vylepšil, jak jsem to udělal, a ukázal jsem příklad použití automatického zvýšení. (To se spouští v části 'sestavení schéma' houslí.)

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;

dokumentace funkce podřetězec Možná duplikace této otázky



  1. Seskupte podle období v intervalu týdnů/měsíců

  2. Jak namapovat řetězec na DB sekvenci v Hibernate

  3. SQL Server:XPATH Query selhává

  4. MySQL Oddělení řetězců operátorem čárkou