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

SQL rozdělit hodnoty do více řádků

Pokud můžete vytvořit tabulku čísel, která obsahuje čísla od 1 do maximálního počtu polí k rozdělení, můžete použít řešení jako toto:

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

Viz housle zde .

Pokud nemůžete vytvořit tabulku, řešením může být toto:

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

příklad houslí je zde .



  1. Desetinné hodnoty v SQL pro dělení výsledků

  2. Návrh spouštěče Microsoft T-SQL

  3. Zrychlené obnovení databáze v SQL Server 2019

  4. Vylepšení tempdb v SQL Server 2019