mysql - JSON_EXTRACT 不适用于嵌套的 json 数据

标签 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:"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`

但是它显示错误:

[Invalid JSON text in argument 1 to function json_extract: "Invalid value." at position 0.]

我在表中的 json 数据无法更改为其他数据,它肯定是正确的 JSON,有人可以更正上面的查询吗?

最佳答案

那不是 JSON 数据。它看起来像一个序列化的 PHP 对象。参见 http://php.net/serialize

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

关于mysql - JSON_EXTRACT 不适用于嵌套的 json 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51361636/

相关文章:

使用 name.co.uk 或 name-something.co.uk 时的 MySQL ORDER BY

mysql - 一个奇怪的 mysql 时间戳插入

mysql 从 docker 退出(1)

php - MySQL 查询按相对匹配顺序搜索关键字

php - 是否有任何查询可以将数据库从一列修改为多列?

javascript - POST方法在Nodejs中返回一个空对象

java - 未找到函数 "DATE"; SQL语句:

mysql - SQL:将多行转换为同一行中的列

javascript - 无法访问 Dialogflow 履行参数

javascript - 如何使用来自不同 View 的 JSON 对象更新 Angular js 中的全局 JSON 字段