Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Parsowanie przez kolumnę MySQL w celu wyodrębnienia danych

To zadziała, jeśli wiersz ma do 9 części.
Jeśli istnieje przypadek dla większej liczby części, możesz rozszerzyć podzapytanie, aby zawierało więcej liczb niż 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 

Zobacz demo .




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Problem z Percona 5.6 InnoDB, który nie używa poprawnie indeksów

  2. Jak zaimplementować automatyczną aktualizację widoku, gdy tylko nastąpi zmiana w bazie danych w AngularJs?

  3. Łączenie się z kontenerem mysql z hosta

  4. Przechowuj wiele adresów e-mail w bazie danych dla różnych typów użytkowników

  5. Jak zainstalować phpMyAdmina