Существует ли какая-либо функция MYSQL, которая будет разбивать столбец на строки 0..N, разделенные запятой?
Было бы обновление ответа GMB, который использует генератор чисел для автоматическогоразделить строки, используя вложенные функции SUBSTRING_INDEX()
.
SELECT
DISTINCT
t.val
, SUBSTRING_INDEX(SUBSTRING_INDEX(t.val, ',', number_generator.row_number), ',', -1) parsed_val
FROM (
SELECT
@row := @row + 1 AS row_number
FROM (
SELECT 0 UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9
) row1
CROSS JOIN (
SELECT 0 UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9
) row2
CROSS JOIN (
SELECT @row := 0
) AS init_user_params
) AS number_generator
CROSS JOIN
t
Результат
| val | parsed_val |
| ----------------------------- | ---------- |
| 1223,7990,8373,3892,7654,8908 | 1223 |
| 1223,7990,8373,3892,7654,8908 | 7990 |
| 1223,7990,8373,3892,7654,8908 | 8373 |
| 1223,7990,8373,3892,7654,8908 | 3892 |
| 1223,7990,8373,3892,7654,8908 | 7654 |
| 1223,7990,8373,3892,7654,8908 | 8908 |
см. демо