Mysql 如何通过键从JSON字符串中提取值
我有一个包含Json字符串记录的列。我想解析json并从select语句中获取特定键的值 示例JSONMysql 如何通过键从JSON字符串中提取值,mysql,sql,json,key-value,Mysql,Sql,Json,Key Value,我有一个包含Json字符串记录的列。我想解析json并从select语句中获取特定键的值 示例JSON {"kofaxDocId":"8ae16f46-c68f-11e5-8105-0e15fb39b661","systemDocType":"Loan Application","requestId":"c770a940-b9f3-4c41-aee6-3e08c1470ec6","docType":"Loan Application","confidence":0.649999976158142
{"kofaxDocId":"8ae16f46-c68f-11e5-8105-0e15fb39b661","systemDocType":"Loan Application","requestId":"c770a940-b9f3-4c41-aee6-3e08c1470ec6","docType":"Loan Application","confidence":0.6499999761581421,"engineType":"kofax","completionStatus":"Suggested"}
我希望我的select查询只获取键“confidence”的值。我尝试使用Regex和Substring,但由于json长度不是固定的,因此它无法获取所有记录的正确值
我试过这些
SELECT substring(extended_metadata, ('"confidence":', extended_metadata )) FROM documents ;
SELECT json_extract(extended_metadata,'confidence') CONFIDENCE from documents;
我的MYSQL版本不支持Json_extract()
感谢您的帮助。MySQL在5.7.7版中获得了对JSON的支持 你必须把它完全放在mysql中,然后我担心你必须把它当作一个字符串来处理,并去掉它的值(只是普通的字符串函数或使用正则表达式)。这并不优雅,但它可以工作
CREATE TABLE testjson (`jsonfield` varchar(2000)) ;
INSERT INTO testjson (`jsonfield`) VALUES ('{"kofaxDocId":"8ae16f46-c68f-11e5-8105-0e15fb39b661","systemDocType":"Loan Application","requestId":"c770a940-b9f3-4c41-aee6-3e08c1470ec6","docType":"Loan Application","confidence":0.6499999761581421,"engineType":"kofax","completionStatus":"Suggested"}') ;
SELECT substring(jsonfield, locate('"confidence":',jsonfield)+13, locate(',"', jsonfield, locate('"confidence":',jsonfield))-locate('"confidence":',jsonfield)-13) as confidence_value
FROM testjson;
这个查询搜索jsondata中的置信度,然后查看置信度之后的下一个分隔符,它会在这两个索引之间减去内容
下面是上面示例的一个SQL版本:jour Mysql版本是什么?你能轻松升级吗?