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博客

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

相关推荐
断春风4 分钟前
如何避免 MySQL 死锁?——从原理到实战的系统性解决方案
数据库·mysql
玉成22618 分钟前
MySQL两表之间数据迁移由于字段排序规则设置的不一样导致失败
数据库·mysql
sinat_3639542340 分钟前
canal-deployer1.1.8 + mysql + rabbitmq消息队列
mysql·rabbitmq
Evan芙1 小时前
mysql二进制部署以及多实例部署
android·数据库·mysql
总有刁民想爱朕ha1 小时前
Windows Server 2019部署MySQL 8教程
数据库·windows·mysql
程序员水自流1 小时前
MySQL数据库自带系统数据库功能介绍
java·数据库·mysql·oracle
德育处主任Pro2 小时前
在亚马逊云上解决RDS、MariaDB 与 Aurora MySQL复制延迟实战指南
数据库·mysql·mariadb
Cat God 0072 小时前
基于 CentOS 7.6 的 MySQL 8.0 主从复制
linux·服务器·mysql·centos
笨蛋少年派2 小时前
Maxwell数据变更捕获工具简介
数据库·mysql
邂逅星河浪漫3 小时前
【MySQL 事务】详细介绍+实例
数据库·mysql·事务