Mysql JSON_提取不适用于嵌套JSON数据

Mysql JSON_提取不适用于嵌套JSON数据,mysql,sql,json,select,Mysql,Sql,Json,Select,我想从我的表中选择数据,它是json数据,因此显示我的表数据如下: user_id: 1 metaname: mymetaname meta_value: a:1:{i:0;a:10:{s:7:"street1";s:36:"shiv plaza";s:4:"city";s:5:"surat";s:5:"state";s:7:"gujarat";s:7:"zipcode";s:6:"395010";s:14:"dollet_country";s:2:"IN";s:10:"tos

我想从我的表中选择数据,它是json数据,因此显示我的表数据如下:

user_id:    1

metaname:  mymetaname

meta_value:    a:1:{i:0;a:10:{s:7:"street1";s:36:"shiv plaza";s:4:"city";s:5:"surat";s:5:"state";s:7:"gujarat";s:7:"zipcode";s:6:"395010";s:14:"dollet_country";s:2:"IN";s:10:"tostreet1l";s:5:"surat";s:7:"tocityl";s:5:"surat";s:8:"tostatel";s:5:"surat";s:10:"tozipcodel";s:6:"395000";s:17:"todollet_countryl";s:2:"IN";}}
我正在尝试运行此查询:

SELECT user_id,JSON_EXTRACT(meta_value, '$."city"') FROM  `usermetatable`
但它显示了错误:

[函数JSON_extract的参数1中的JSON文本无效:“无效 值。“在位置0处。]


表中我的json数据不能更改为其他数据,它肯定是正确的json,有人可以更正上述查询吗?

这不是json数据。它看起来像一个序列化的PHP对象。看

没有用于从序列化对象提取字段的MySQL函数。您应该将整个对象提取到PHP应用程序中,并调用它,然后访问对象成员。

“它肯定是正确的JSON”…您为什么这么认为?基于该示例,它看起来不像是正确的JSON,而且(可以用来验证JSON字符串的站点)也同意我的观点。事实上,它离有效的JSON还有很长的路要走。