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

SQL разделяне на стойности на няколко реда

Ако можете да създадете таблица с числа, която съдържа числа от 1 до максималните полета за разделяне, можете да използвате решение като това:

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

Моля, вижте цигулка тук .

Ако не можете да създадете таблица, решението може да бъде следното:

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

примерна цигулка е тук .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Грешка при несинхронизирани команди на PHP

  2. MYSQL ПОРЪЧКА ПО СЛУЧАЙ Проблем

  3. Отстраняване на неизправности:MySQL/MariaDB грешка #1044 и #1045 Достъпът е отказан за потребителя

  4. Каква е ползата от Zerofill в MySQL?

  5. Функция MySQL LEAST() – Намерете най-малкия аргумент в списък с аргументи