Если вы можете создать таблицу чисел, которая содержит числа от 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
пример скрипта - здесь .
Ниже я работал для меня.
codec => multiline{
pattern => "^\s*\d{1,}\|"
negate => "true"
what => "previous"
}
(?m)%{GREEDYDATA}
будет соответствовать любому многострочному журналу, включая ваши. Пожалуйста, проверьте здесь