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

MariaDB从JSON数组提取值如何去掉结果的括号与引号

MySQL JSON字段提取纯文本值修改方案

问题原因

原查询使用通配符$[*].Name匹配JSON数组中所有元素的Name字段,返回结果为JSON数组类型,因此自带方括号包裹,字符串值自带双引号。

解决方案

方案1:已知Name字段所在数组下标(推荐,性能最优)

你提供的JSON数组中Name字段位于下标为2的元素(JSON数组下标从0开始计数),可直接指定路径查询,搭配JSON_UNQUOTE去掉引号即可:

SELECT JSON_UNQUOTE(JSON_EXTRACT(jsonParam, '$[2].Name')) FROM tblName WHERE biPK=1;

MySQL 5.7及以上版本支持更简洁的->>运算符,等价于JSON_UNQUOTE(JSON_EXTRACT()):

SELECT jsonParam->>'$[2].Name' FROM tblName WHERE biPK=1;

方案2:不确定Name字段所在数组位置

如果Name可能出现在数组任意位置,且只会返回一个匹配值,可通过字符串截取清理结果:

SELECT TRIM(BOTH '"' FROM SUBSTRING_INDEX(SUBSTRING_INDEX(JSON_EXTRACT(jsonParam, '$[*].Name'), '[', -1), ']', 1)) FROM tblName WHERE biPK=1;

MySQL 8.0及以上版本可使用JSON_TABLE将JSON数组转为临时表查询,逻辑更规范:

SELECT j.name 
FROM tblName t,
JSON_TABLE(
  t.jsonParam,
  '$[*]' COLUMNS (
    name VARCHAR(255) PATH '$.Name'
  )
) j
WHERE t.biPK=1 AND j.name IS NOT NULL;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 23:57:03