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

SQL中如何提取表内JSON数组列的最后一个元素值

提取JSON数组最后一个元素的Name值方案

不同SQL数据库的JSON处理函数存在差异,以下是主流数据库的可行实现方案:

MySQL(8.0+版本)

利用JSON_LENGTH获取数组长度,结合JSON路径定位最后一个元素(数组索引从0开始,需用长度减1),再提取Name值:

SELECT
    ID,
    Ticket,
    -- 简化写法(->> 等价于 JSON_UNQUOTE(JSON_EXTRACT()))
    Description->>CONCAT('$[', JSON_LENGTH(Description)-1, '].Name') AS Description,
    Date
FROM YourTableName;

如果需要处理空数组的情况,可通过COALESCE设置默认值:

SELECT
    ID,
    Ticket,
    COALESCE(Description->>CONCAT('$[', JSON_LENGTH(Description)-1, '].Name'), '无名称') AS Description,
    Date
FROM YourTableName;

SQL Server

版本2022+(支持last()路径函数)

直接用last()定位数组最后一个元素,写法简洁高效:

SELECT
    ID,
    Ticket,
    JSON_VALUE(Description, 'strict $[last()].Name') AS Description,
    Date
FROM YourTableName;

版本2016-2019

通过OPENJSON将数组转为行集,按索引倒序取第一条数据:

SELECT
    ID,
    Ticket,
    (SELECT TOP 1 JSON_VALUE(j.value, '$.Name')
     FROM OPENJSON(t.Description) j
     ORDER BY CAST(j.[key] AS INT) DESC) AS Description,
    Date
FROM YourTableName t;

PostgreSQL

针对json或jsonb类型字段,用数组长度函数定位最后一个元素:

-- 字段为json类型时
SELECT
    ID,
    Ticket,
    (Description -> (json_array_length(Description) - 1) ->> 'Name') AS Description,
    Date
FROM YourTableName;

-- 字段为jsonb类型时
SELECT
    ID,
    Ticket,
    (Description -> (jsonb_array_length(Description) - 1) ->> 'Name') AS Description,
    Date
FROM YourTableName;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 02:50:05