使用JSON_QUERY()提取JSON字段汽车名称返回空值问题求助
错误原因及修正方案
核心错误点
- JSON路径匹配错误:
cars字段存储的是JSON数组结构,数组内的元素才包含element嵌套对象,你写的路径$.name直接从根节点查找name属性,完全跳过了数组层和element层,和实际存储结构不匹配,自然无法匹配到值。 - 函数使用错误:
JSON_QUERY仅用于提取JSON中的对象或数组类型的内容,你要提取的name是字符串类型的标量值,需要使用提取标量值的专用JSON函数,多数SQL方言中对应函数为JSON_VALUE。
修正后查询语句
如果你的cars字段每个值都只有1个车辆元素,使用以下语句即可正常取值:
SELECT JSON_VALUE(cars, '$[0].element.name') AS car_names FROM myTable LIMIT 100
补充说明:如果
cars数组可能包含多个车辆条目,需要先将数组展开为多行再提取对应值,MySQL实现示例如下:SELECT j.car_name FROM myTable t, JSON_TABLE( t.cars, '$[*]' COLUMNS (car_name VARCHAR(255) PATH '$.element.name') ) j LIMIT 100
内容的提问来源于stack exchange,提问作者user16228179
相关产品推荐
相关产品推荐

