MySQL如何提取键名以@开头的JSON数据?
解决MySQL提取带@前缀JSON键的问题
可以在不修改表中JSON键名的前提下获取对应数据,问题出在JSON路径中特殊字符键的写法上,MySQL要求包含特殊字符的JSON键需要用双引号包裹起来。
修改后的SQL语句如下:
SELECT JSON_ARRAYAGG(JSON_OBJECT ( 'id', JSON_EXTRACT(INV_MASTER, "$[0].id[0]") , 'href', JSON_EXTRACT(INV_MASTER, "$[0].href[0]"), '@type', JSON_EXTRACT(INV_MASTER, "$[0].\"@type\"[0]"), 'entityChar', JSON_EXTRACT(INV_MASTER, "$[0].entityChar") )) AS MASTER FROM PROFILE;
关键说明
- 对于键名包含
@这类特殊字符的JSON字段,在JSON路径表达式里必须用双引号将键名包裹,比如"@type" - 由于SQL语句本身用单引号包裹字符串,所以这里需要用转义符
\来转义双引号,确保SQL解析正确
另外,也可以使用更简洁的->运算符替代JSON_EXTRACT,写法更直观:
SELECT JSON_ARRAYAGG(JSON_OBJECT ( 'id', INV_MASTER->"$[0].id[0]" , 'href', INV_MASTER->"$[0].href[0]", '@type', INV_MASTER->"$[0].\"@type\"[0]", 'entityChar', INV_MASTER->"$[0].entityChar" )) AS MASTER FROM PROFILE;
内容的提问来源于stack exchange,提问作者Kimi
相关产品推荐
相关产品推荐

