You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在MariaDB中拆分字符串列 实现JSON数组元素逐行显示

MariaDB拆分JSON数组实现作者单行展示方案

MariaDB 10.2及以上版本自带完整JSON处理函数,不需要重新导入文件,直接通过SQL就能实现每个作者单独换行的效果。

场景1:仅查询时格式化输出换行效果

直接用JSON_TABLE拆分JSON数组为多行,再拼接指定换行符即可,代码如下:

-- 作者数量较多时先执行,避免拼接内容被截断
SET SESSION group_concat_max_len = 10240;

SELECT
  GROUP_CONCAT(single_author SEPARATOR '\n<br />\n') AS product_author_formatted
FROM JSON_TABLE(
  product_author,
  '$[*]' COLUMNS (single_author VARCHAR(255) PATH '$')
) AS author_list;
  • 逻辑说明:JSON_TABLE会遍历存储的作者JSON数组,把每个数组元素拆成独立的单行数据,再通过GROUP_CONCAT用指定换行符\n<br />\n把所有作者名拼接起来,输出结果和预期格式完全一致。
  • 调整提示:如果是纯文本场景不需要HTML换行标签,直接把分隔符改成'\n'即可。

场景2:需要把作者拆分为独立行长期存储

如果不只是临时展示,而是要遵循数据库设计范式把每个作者拆成单独记录存储,可以按以下方式操作:

  1. 先创建作者和商品的关联表
CREATE TABLE product_author_mapping (
  product_id BIGINT NOT NULL, -- 替换为你原商品表的主键字段
  author_name VARCHAR(255) NOT NULL
);
  1. 把拆分后的作者数据插入关联表
INSERT INTO product_author_mapping (product_id, author_name)
SELECT
  id, -- 替换为你原商品表的主键字段名
  single_author
FROM your_product_table -- 替换为你存储product_author字段的原表名
JOIN JSON_TABLE(
  product_author,
  '$[*]' COLUMNS (single_author VARCHAR(255) PATH '$')
) AS author_list;

操作完成后直接查询关联表,就能得到每个作者单独占一行的结果,后续做作者筛选、关联统计都会更方便。

注意:MySQL Workbench的结果网格默认不会渲染文本内的换行符,如果要在Workbench里直接看到换行效果,可以点击结果面板的「Formatted」查看模式,或者导出结果文件后就能看到正常的换行排版。

内容的提问来源于stack exchange,提问作者Marco

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.30 10:12:27