sql >> Database >  >> RDS >> Mysql

SQL splitst waarden op in meerdere rijen

Als u een getallentabel kunt maken met getallen van 1 tot het maximum aantal velden dat u wilt splitsen, kunt u een oplossing als deze gebruiken:

select
  tablename.id,
  SUBSTRING_INDEX(SUBSTRING_INDEX(tablename.name, ',', numbers.n), ',', -1) name
from
  numbers inner join tablename
  on CHAR_LENGTH(tablename.name)
     -CHAR_LENGTH(REPLACE(tablename.name, ',', ''))>=numbers.n-1
order by
  id, n

Zie fiddle hier .

Als u geen tabel kunt maken, kan dit een oplossing zijn:

select
  tablename.id,
  SUBSTRING_INDEX(SUBSTRING_INDEX(tablename.name, ',', numbers.n), ',', -1) name
from
  (select 1 n union all
   select 2 union all select 3 union all
   select 4 union all select 5) numbers INNER JOIN tablename
  on CHAR_LENGTH(tablename.name)
     -CHAR_LENGTH(REPLACE(tablename.name, ',', ''))>=numbers.n-1
order by
  id, n

een voorbeeldviool is hier .



  1. Schemanaam toevoegen aan entiteit in Spring-gegevens?

  2. Reset het root-wachtwoord van de MySQL-server

  3. Haal het Oracle-tabeltype op uit de opgeslagen procedure met behulp van JDBC

  4. Voorbeelden van het converteren van 'date' naar 'datetimeoffset' in SQL Server (T-SQL)