最近在项目中碰到了表字段为json格式,需要模糊搜索的情况,网上搜了下资料,是这么解决的。
- 假设有一张数据库表t_node,它是这样的:
id node_data 1 {"parentId":"123","pathName":"测试数据1/测试层级1"} 2 {"parentId":"123","pathName":"测试数据2/无关数据"} - 我需要查到id=1的数据,即:
id node_data 1 {"parentId":"123","pathName":"测试数据1/测试层级1"} - 我写的SQL:
实现1:
SELECT * FROM t_node WHERE deleted=0 AND node_data->'$.pathName' LIKE '%测试数据1/测试层级%'
实现2:
SELECT * FROM t_node WHERE JSON_EXTRACT(node_data, '$.pathName') LIKE '%测试数据1/测试层级%' and deleted=0
都可以查到数据