遇到一个需求,在搜索栏增加一个是否虚拟仓查询的功能, 但是看了表之后发现没有虚拟仓的字段,目标数据都在content字段中的json数据中。
(搜索栏)
(数据库数据)
我这笨脑瓜想不出什么方法,请教了下老大,得知可以直接用like查询
sql语句如下:
select * from `rules_delivery` where content like '%"if_warehouse":"1"%';
至于怎么把sql写在代码中,看使用框架与写法,我这里以tp5为例:
//是否虚拟仓
if ($p_if_warehouses === 0) $where['content'] = ['like', '%"if_warehouse":"0"%'];
if ($p_if_warehouses === 1) $where['content'] = ['like', '%"if_warehouse":"1"%'];
我这里查询全部的时候会传’ ',所以用了===判断,直接like匹配json中对应的数据,实测查询速度并不算慢, 也可能是数据量小,大佬们有更好的方式可以分享一下。
最后,祝大家节日快乐,注意身体.