Я могу дать вам начало, где абзацы помещаются в собственные строки, а затем я строю набор json.Конечно, вы должны изменить его, чтобы он соответствовал вашим данным
Итак, давайте начнем с этой базы данных в качестве базы
CREATE TABLE table1
(`ID` int, `text_body` text)
;
INSERT INTO table1
(`ID`, `text_body`)
VALUES
(1, 'This is an intro paragraph. Here are some words.\n\nAnd a second paragraph. More words.'),
(2, 'This is another column value with multiline strings. Here are some words.'),
(3, 'Look, another paragraph in this same column. More words.\nEven a third paragraph!\nAnd so on ...')
;
Вы получаете с этим оператором Select
Select
JSON_ARRAYAGG(JSON_OBJECT("text_body", `part`,"ID",`ID` )) text_body
FROM
(
SELECT
SUBSTRING_INDEX(
SUBSTRING_INDEX(p.text_body, '\n', N.n + 1)
, '\n', -1
) AS part
,p.ID
FROM (SELECT @n := @n + 1 AS n
FROM INFORMATION_SCHEMA.COLUMNS AS a
CROSS JOIN INFORMATION_SCHEMA.COLUMNS AS b
CROSS JOIN (SELECT @n := -1) AS I
WHERE @n < 1000) N
CROSS JOIN table1 p
WHERE
N.n <= (LENGTH(p.text_body) - LENGTH(REPLACE(p.text_body, '\n', '')))
)t1;
Youполучить этот результат
[{"ID": 1, "text_body": "This is an intro paragraph. Here are some words."},
{"ID": 2, "text_body": "This is another column value with multiline strings. Here are some words."},
{"ID": 3, "text_body": "Look, another paragraph in this same column. More words."},
{"ID": 1, "text_body": "And a second paragraph. More words."},
{"ID": 3, "text_body": "Even a third paragraph!"}
, {"ID": 3, "text_body": "And so on ..."}]
Так что это работает с mysql 5,7 band 8.x, до этого не было функций json, которые могли бы это сделать, и вам нужно собрать его вручную с помощью concat.Но внутренний Select работает почти идеально, как и сейчас, только \ n \ n пока не работает.
Вот что на dbfiddle можно поиграть с