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
复制请注明出处,在世界中挣扎的灰太狼