MySQL JSON路径表达式错误3143:提取嵌套字段失败求助
解决MySQL JSON路径表达式错误(Error Code: 3143)
你的问题出在MySQL的JSON路径语法上——当JSON对象的键是纯数字时,必须用双引号把键名括起来,直接写$.1会被判定为无效路径。
正确的查询语句
把数字键用双引号包裹即可:
SELECT customFields->>'$."1".name' FROM part;
也可以用等价的JSON_UNQUOTE + JSON_EXTRACT写法:
SELECT JSON_UNQUOTE(JSON_EXTRACT(customFields, '$."1".name')) FROM part;
为什么原语句报错
MySQL的JSON路径规则里,纯数字的键名不属于合法的标识符,必须显式用双引号标注它是对象的属性名,而非数组索引。如果你的customFields是数组结构(比如[{"name":"xxx"}, {"name":"yyy"}]),那才用$[0].name这种索引写法,但显然你的场景是对象下的数字键。
示例测试
假设part表的customFields列数据如下:
{ "1": {"name": "不锈钢螺栓"}, "2": {"name": "铝合金螺母"} }
执行正确语句后,会返回对应键"1"下的不锈钢螺栓值。
内容的提问来源于stack exchange,提问作者Tim
相关产品推荐
相关产品推荐

