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

如何在MySQL中从嵌套JSON字段提取指定字段值?

提取JSON数组中指定key对应的value值

你之前的SQL依赖数组索引取值,一旦数组元素顺序变动,结果就会出错。正确的做法是根据key字段的具体值匹配对应的value,以下是不同数据库的实现方式:

MySQL/MariaDB

方法1:用JSON_TABLE展开数组(推荐,可读性高)

SELECT jt.value AS country
FROM test_table,
     JSON_TABLE(
         description,
         '$[*]' COLUMNS(
             key_name VARCHAR(50) PATH '$.key',
             value VARCHAR(100) PATH '$.value'
         )
     ) jt
WHERE jt.key_name = 'country_name';

方法2:用JSON_SEARCH+JSON_EXTRACT组合

SELECT JSON_UNQUOTE(
    JSON_EXTRACT(
        description,
        CONCAT('$[', JSON_SEARCH(description, 'one', 'country_name', NULL, '$[*].key'), '].value')
    )
) AS country
FROM test_table;

PostgreSQL

如果字段是jsonb类型(推荐用jsonb):

SELECT (elem->>'value') AS country
FROM test_table,
     jsonb_array_elements(description::jsonb) AS elem
WHERE elem->>'key' = 'country_name';

如果是json类型,把jsonb_array_elements换成json_array_elements即可。

SQLite

SELECT json_extract(value, '$.value') AS country
FROM test_table,
     json_each(description)
WHERE json_extract(value, '$.key') = 'country_name';

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 20:50:23