【问题标题】:MySQL Extract JSON from select query with two relational tablesMySQL 从带有两个关系表的选择查询中提取 JSON
【发布时间】:2020-07-19 00:46:12
【问题描述】:

您好,我正在处理一个将两个关系表与客户信息相结合的选择查询。名为“选项”的字段包含大量 JSON 信息。

我找到了一篇类似的文章,但是我无法使其在现有查询的上下文中工作,并且服务器给出了错误消息函数“JSON_EXTRACT”不存在。经过进一步审查,我们发现服务器本身没有 JSON_EXTRACT 函数。

是否可以在两个字符串之间简单地使用 % % ?

即在 {"TransactionID":" 和 "} 之间选择

只是自己解释 JSON,而不是依赖服务器函数。

这里是查询

select u.Email, u.Name, up.Type, up.Name, up.Price, up.options from users_packages 
inner join users u on up.UserID = u.id

选项字段显示此值,例如:

{"TransactionID":"4G631007P6080114Y39840"}

我正在寻找一个只给我值的查询,即“4G631007P6080114Y39840”并提取 TransactionID 的 JSON。请注意,除了 TransactionID 之外,可能还有其他一些 json 元素

谢谢!

https://stackoverflow.com/questions/49063684/mysql-extract-json-element-from-array

【问题讨论】:

  • 你运行的是哪个版本的 MySQL (select version())?
  • MYSQL 版本是:5.5.56-MariaDB
  • 在 MySQL 5.7 中添加了 JSON 支持,因此 json 函数如 JSON_EXTRACT() 在 5.5 中不可用。如果你想使用 JSON,你真的应该考虑升级(此外,5.5 是一个真的旧版本,不支持)。
  • 我明白了。是否有不涉及升级该服务器上的 MySQL 版本的解决方法?也许通过字符串?
  • 我们升级到 Maria DB 10.1,JSON_EXTRACT 函数也不存在。

标签: mysql json inner-join


【解决方案1】:

试试这样的 JSON_EXTRACT(yourJSON, "$.fieldname")

select u.Email, u.Name, up.Type, up.Name, up.Price, JSON_EXTRACT(up.options, "$.TransactionID") from users_packages inner join users u on up.UserID = u.id 

这里你有 json_extract 是如何工作的 https://dev.mysql.com/doc/refman/8.0/en/json-search-functions.html

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-21
    • 2017-10-17
    相关资源
    最近更新 更多