MySQL查询json数组是否包含多个指定字符串

案例数据:(只放了一条数据)
[{“categoryId”: 130, “categoryName”: “API工艺研究”}, {“categoryId”: 136, “categoryName”: “化合物委托生产”}, {“categoryId”: 139, “categoryName”: “制剂工艺研究”}, {“categoryId”: 144, “categoryName”: “制剂委托生产”}, {“categoryId”: 147, “categoryName”: “药理药效毒理研究”}]
这里有categoryId:130、136、139、144、147,以及对应的categoryName
需求:
查询包含136、147有哪些列

方法:

SELECT
	service_field_drug_tag 
FROM
	fmall_company 
WHERE
	REPLACE ( JSON_EXTRACT( service_field_drug_tag, '$[*].categoryId' ), '[', ',' ) REGEXP '136|147'

JSON_EXTRACT: 截取数据库中指定字段中存储的json数据中的某个字段对应的值,‘$[*].categoryId’:取出所有categoryId
在这里插入图片描述
REPLACE: 直接替换某字段中的特定字符串:replace (field_name,from_str,to_str)
REGEXP: 正则拼接多条值

结果:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值