Mysql 中 json、JsonArray 类型字段中指定属性的模糊查询问题

解决json类型字段的模糊查询:

存储的数据格式:{"type": "10", "mobile": "13545678900", "countryCode": "86"}

select * from a where mobile_json->'$.mobile' like '%135%'

解决json类型字段的精确查询

数据存储格式:{"type": "10", "mobile": "13545678900", "countryCode": "86"}

select * from a where mobile_json-> '$.mobile' = 13545678900

解决 JsonArray 类型字段的模糊查询:

存储的数据格式: [{"type": "10", "mobile": "13545678900", "countryCode": "86"}]

select * from a where mobile_json->'$[*].mobile' like '%135%'

select * from a where JSON_EXTRACT(mobile_json, '\[\*\].mobile') LIKE '%135%'

解决 JsonArray 类型字段的精确查询:

存储的数据格式: [{"type": "10", "mobile": "13545678900", "countryCode": "86"}]

select * from a where JSON_CONTAINS(mobile_json,JSON_OBJECT('mobile', "13545678900"))

thinkphp 或 laravel 写法

复制代码
// 精确匹配
$query->whereRaw("JSON_CONTAINS(ext_data, JSON_OBJECT('jump_type', ". $value."))" ) 
复制代码
// 模糊匹配
$query->whereRaw("items_json->'$[*].name' like '%$value%'" );
复制代码
$query->whereRaw("JSON_EXTRACT(items_json, '$[*].name') LIKE '%$value%'" );

参考文献:

mysql查询json数组内字段模糊 - 老白网络

mysql查询json内字段 mysql查询json数组内字段模糊_恋上一只猪的技术博客_51CTO博客

学习笔记 如有侵权,请联系删除

相关推荐
java资料站41 分钟前
Docker 快速部署 MySQL 主从复制(一主一从)
mysql·adb·docker
檬柠wan7 小时前
MySQL-数据库增删改查学习
数据库·学习·mysql
Trouvaille ~9 小时前
【MySQL】视图:虚拟表的妙用
数据库·mysql·adb·面试·数据处理·后端开发·视图
亚空间仓鼠11 小时前
关系型数据库MySQL(二):高级特性
数据库·sql·mysql
亚空间仓鼠11 小时前
关系型数据库MySQL(五):Galara高可用
数据库·mysql
做时间的朋友。12 小时前
MySQL 8.0 窗口函数
android·数据库·mysql
试试勇气12 小时前
MySQL--库的操作
数据库·mysql
青城山下————12 小时前
CentOS 7(3.10 内核)成功安装 MySQL 5.7 全流程实践(附问题总结)
linux·mysql·centos
Chasing__Dreams13 小时前
Mysql--基础知识点--110--select ... lock in share mode VS select ... for share
数据库·mysql
20YC编程社区13 小时前
一分钟了解JSON格式,使用场景,和它的优缺点
json