表中一个字段存储了json格式的数据,如tasks字段,每个人的任务是一个数组,也就是转换成json后的{}:[{"create_time":"2019-08-2716:24:51","finish_time":"2019-08-2912:51:47","task_result":"AGREE","task_status":"COMPLETED","taskid":"62047012545","userid":"0637661208752994"},{"create_time":"2019-08-2716:24:43","task_result":"NONE","task_status":"CANCELED","taskid":"62053477946","userid":"V00_1400815737560"}]现在想通过regexp匹配到指定用户的记录,比如我想查找其中是否存在(用户V00_1400815737560已同意):"task_result":"AGREE"和"userid":"V00_1400815737560"的记录。需要注意的是以上两个条件必须属于一个用户,也就是在一个{}中。请问可以使用mysql的regexp进行这样的查找吗?==========================================================目前查询sql,有一个缺点是可能会匹配到两个{}里,也就是第一个{}匹配到了"task_status":"RUNNING",第二个{}匹配到了"userid":"%%s":select*fromt_xxwheretasksregexp'"task_status":"RUNNING".+"userid":"%%s"';
2 回答
慕桂英3389331
TA贡献2036条经验 获得超8个赞
如果多个字段的话,用正则很麻烦。要写很长SELECT*FROMmytableWHEREmycolumnREGEXP"{[^{}]*(\"task_result\":\"AGREE\"[^{}]*\"userid\":\"V00_1400815737560\"|\"userid\":\"V00_1400815737560\"[^{}]*\"task_result\":\"AGREE\")[^{}]*}";
HUH函数
TA贡献1836条经验 获得超4个赞
如果没有嵌套json且每一项的值都可以保证不含字符}的话可以把正则里的.+替换成[^}]+。否则会非常麻烦此外还需要保证json序列化的时候task_status始终在userid前面
添加回答
举报
0/150
提交
取消