【问题标题】:MySQL. search data in serialized column [duplicate]MySQL。在序列化列中搜索数据[重复]
【发布时间】:2020-03-13 19:23:39
【问题描述】:

我有桌子工人和桌子工作表。

这两个表通过列“worker_id”链接

在工作表中,我们有一些关于工人的数据,例如生日、性别等。 此数据以序列化数组的形式保存在一列中

类似:

{"photo":"image.png","sex":"male","birthday":"14.09.2018","phone":"8(777)777-7778"}

例如,我的任务是招募 20 岁以上和 30 岁以下的工人

我该怎么做? 生日键也可能是空值

我会很高兴得到任何帮助

【问题讨论】:

  • 不妨看看内置的 JSON 函数

标签: mysql


【解决方案1】:

您可以在 MySQL 中使用json_extractjson 获取数据

set @json = '{"age": 25,"photo":"image.png","sex":"male","birthday":"14.09.2018","phone":"8(777)777-7778"}';
select json_extract(@json, '$.sex'); //returns "male"

我想你正在寻找这样的查询:

select *
  from workers w
 inner join worksheets ws on w.id = ws.worker_id
 where json_extract(ws.json_field, '$.age') > 20

看看MySQLJSON函数 MYSQL Json

【讨论】:

  • 似乎我的 mysql 服务器对于“json_extract”来说是旧的,因为我收到错误“json_extract is not exist”。可能还有其他灵魂吗?
  • @Baurzhan 你用的是哪个版本的mysql服务器?
  • 版本为 5.0.12
  • MySQL 本机 JSON 函数是在 5.7.8 版上实现的,正如文档所说,我认为在您的情况下,您可以尝试实现自己的函数或将其更新到新版本
  • @Baurzhan 你不能更新你的 MySQL 版本吗?
猜你喜欢
  • 2015-12-23
  • 1970-01-01
  • 2012-05-17
  • 2014-03-01
  • 1970-01-01
  • 1970-01-01
  • 2019-08-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多