Mysql
 sql >> база данни >  >> RDS >> Mysql

mySQL>> Нормализиране на поле, разделено със запетая

Моля, копирайте кода си в действителната публикация и предоставете кода, който сте се опитали да използвате, за да разрешите проблема.

Функцията substring_index връща част от низ с някакъв разделител (тук запетая) и когато бъде подаден отрицателен индекс, тя започва да търси съвпадения от противоположната страна, така че -1 грабва един елемент от това, което иначе би било списъци с много елементи (за индекс>=2).

Според нашата дискусия промених как направих това и показах пример за използване на автоматично нарастване. (Това се изпълнява в частта „build schema“ на 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;

документация на функцията за подниз Възможно дублиране на този въпрос



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. mysql-connector-java за mysql 5.6

  2. Изясняване на реда за присъединяване за създаване на временни таблици

  3. MySQL:Как да променя varchar(255) UNIQUE колона на UNIQUE Text NOT NULL?

  4. Mysql Съхранение на променлива с резултат от SELECT CASE

  5. MySQL -PHP вмъкване DATETIME