MySQL。在序列化列中搜索数据

MySQL。在序列化列中搜索数据,mysql,Mysql,我有桌子工人和桌子工作表 这两个表通过列“worker\u id”链接 在工作表中,我们有一些关于员工的数据,如生日、性别等。 此数据作为序列化数组保存在一列中 比如: {“照片”:“image.png”,“性别”:“男性”,“生日”:“14.09.2018”,“电话”:“8(777)777-7778”} 例如,我的任务是让20岁以上和30岁以下的工人参加 我怎么做? 此外,在生日键中,可能是空值 我很高兴得到任何帮助您可以使用json\u extract从MySQL中的json获取数据 set

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

这两个表通过列“worker\u id”链接

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

比如:

{“照片”:“image.png”,“性别”:“男性”,“生日”:“14.09.2018”,“电话”:“8(777)777-7778”}

例如,我的任务是让20岁以上和30岁以下的工人参加

我怎么做? 此外,在生日键中,可能是空值


我很高兴得到任何帮助

您可以使用
json\u extract
从MySQL中的
json
获取数据

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
看看
MySQL
JSON
函数

您可以使用
json\u extract
从MySQL中的
json
获取数据

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
看看
MySQL
JSON
函数

也许可以看看内置的JSON函数。也许可以看看内置的JSON函数。我的mysql服务器对于“JSON\u extract”来说是旧的,因为我得到错误“JSON\u extract不存在”。可能还有其他解决方案吗?@Baurzhan您使用的是哪个版本的mysql服务器?版本是5.0.12MySQL本机JSON函数在版本5.7.8上实现,如文档所述,我认为在您的情况下,您可以尝试实现自己的函数或将其更新为新函数version@Baurzhan你不能更新你的MySQL版本吗?看来我的MySQL服务器对于“json_extract”来说太旧了,因为我得到了错误“json_extract不存在”。可能还有其他解决方案吗?@Baurzhan您使用的是哪个版本的mysql服务器?版本是5.0.12MySQL本机JSON函数是在5.7.8版本上实现的,正如文档所说,我认为在您的情况下,您可以尝试实现自己的函数或将其更新为新函数version@Baurzhan你不能更新你的MySQL版本吗?