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

如何将数据表中存储数组的列拆分为每个元素单独成行输出

数组列拆分为单行元素的实现方法

这个操作属于数组的行展开/扁平化处理,不同数据库对应的实现语法不同,常用数据库的写法如下:

  • PostgreSQL
    使用内置的unnest函数直接处理数组类型列:
SELECT unnest(val) AS val
FROM 你的表名;
  • MySQL 8.0及以上版本
    如果val列存储的是JSON格式数组,使用JSON_TABLE实现:
SELECT j.val
FROM 你的表名 t,
JSON_TABLE(t.val, '$[*]' COLUMNS (val VARCHAR(255) PATH '$')) j;
  • Hive / Spark SQL
    使用explode函数展开数组:
SELECT explode(val) AS val
FROM 你的表名;
  • SQL Server
    使用OPENJSON解析JSON数组并展开:
SELECT j.value AS val
FROM 你的表名 t
CROSS APPLY OPENJSON(t.val) j;
  • Oracle 12c及以上版本
    通过层级查询配合JSON函数实现:
SELECT JSON_VALUE(t.val, '$[' || lv.lvl || ']') AS val
FROM 你的表名 t
CROSS JOIN (
    SELECT LEVEL - 1 AS lvl
    FROM dual
    CONNECT BY LEVEL <= (SELECT MAX(JSON_ARRAY_LENGTH(val)) FROM 你的表名)
) lv
WHERE JSON_VALUE(t.val, '$[' || lv.lvl || ']') IS NOT NULL;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 22:18:03