应用GET_JSON_OBJECT后,如何提取键300对应的数值?
从JSON字符串中提取指定键的数值
直接用JSON函数嵌套(推荐)
因为GET_JSON_OBJECT(features, '$.field')返回的是JSON结构字符串,直接对这个结果再调用一次GET_JSON_OBJECT,指定键300就能拿到对应值:
SELECT GET_JSON_OBJECT(GET_JSON_OBJECT(features, '$.field'), '$.300') AS value_300 FROM your_table;
MySQL里JSON_EXTRACT和GET_JSON_OBJECT功能完全一致,也可以这么写:
SELECT JSON_EXTRACT(GET_JSON_OBJECT(features, '$.field'), '$.300') AS value_300 FROM your_table;
字符串处理兜底方案
如果遇到JSON解析异常(比如原字符串格式不标准),可以用字符串截取的方式实现:
SELECT TRIM(TRAILING '}' FROM SUBSTRING_INDEX( SUBSTRING_INDEX(GET_JSON_OBJECT(features, '$.field'), '300:', -1), ',', 1 ) ) AS value_300 FROM your_table;
逻辑是先截取300:之后的内容,再取第一个逗号前的部分,最后清理掉末尾的右大括号。
两种方法都能输出你要的结果:
286 86 3
内容的提问来源于stack exchange,提问作者bluekit46
相关产品推荐
相关产品推荐

