MySQL 根据JSON类型的字段进行过滤数据的方式


第一种方式:JSON_CONTAINS 函数 ; 执行相等形式的比较 注意:值的类型一定要相同,不然会报错

文档地址:https://dev.mysql.com/doc/refman/8.0/en/json-search-functions.html#function_json-contains

select JSON_CONTAINS('{"tagId": 18, "tagName": "广告", "tagType": "1", "valueType": "default"}', '18','$.tagId')

但是这种只能匹配单个值得,无法多值匹配

第二种方式: MEMBER OF 函数 ; 执行相等形式的比较 此方式无需在意类型的匹配

文档地址: https://dev.mysql.com/doc/refman/8.0/en/json-search-functions.html#operator_member-of

SELECT 2 MEMBER OF(CONCAT('[',(select GROUP_CONCAT(n) FROM (SELECT 1 AS n union select 2) t),']'));

通过 MEMBER OF写得话,可以匹配多值,相当于IN查询

第三种方式:JSON表,这种方式可以适用于更复杂的场景,比如IN获取其他查询的方式; 大白话就是:声明JSON的结构,将JSON转换为一个临时表

文档地址:https://dev.mysql.com/doc/refman/8.0/en/json-table-functions.html#function_json-table

select * from JSON_TABLE('[ {"name":"小明","age":59} ]','$[*]' COLUMNS(name VARCHAR(200) PATH '$.name',age int PATH '$.age')) AS t 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM