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

Разбор на MySQL колона за извличане на данни

Това ще работи, ако редът има до 9 части.
Ако има нужда от повече части, можете да разширите подзаявката, за да включва повече числа от 9:

select  
  group_concat(
    replace(t.part, '-', concat(' ', left(t.part, 2)))
    order by t.partno
    separator ' '                                      
  ) Models
from (
  select t.Models, p.partno,
    replace(replace(
      substring_index(t.Models, ';', p.partno),
      substring_index(t.Models, ';', p.partno - 1),
      ''
    ), ';', '') part 
  from parts_listing t cross join (
    select 1 partno union all select 2 union all select 3 union all
    select 4 union all select 5 union all select 6 union all
    select 7 union all select 8 union all select 9
  ) p 
  where replace(replace(Models, '-', ''), ';', '') regexp'^[0-9]*$'
) t
where t.part <> ''
group by t.Models
order by t.Models 

Вижте демонстрацията .




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Проблем с хибернация:анотацията @OneToMany връща дубликати

  2. Синтаксична грешка или нарушение на достъпа:1055 Израз #8 от списъка SELECT не е в клаузата GROUP BY и съдържа неагрегирана колона

  3. Преобразуване на съпоставянето на колони в таблица/база данни по подразбиране

  4. Изберете ред с най-новата дата на потребител

  5. Как да вмъкна json масив в mysql база данни