-- 要查找的值 SET @valueMapping = 17; -- 表字段:id, config -- config字段格式: /* { "fieldModels": [{ "key": 0, "guid": "1", "field": "Id", "dataType": 1, "showName": "標識", "textFormat": "", "valueMapping": 17 }, { "key": 1, "guid": "2", "field": "orderid", "dataType": 0, "showName": "orderid", "textFormat": "", "valueMapping": -1 } } */ -- 需求:查找 config JSON字段(對象類型)中 fieldModels(數組類型)數組字段中 valueMapping(整形)值等於 17 的記錄 -- 1、先提取 config JSON 字段中 fieldModels 屬性,得到數組 SELECT JSON_EXTRACT(`config`,'$.fieldModels') fieldModels FROM `sql_model`; -- 2、再從 fieldModels 數組中查找 valueMapping 的值是否等於查找的值,返回 1 或 0,表示是否已找到 SELECT JSON_CONTAINS(JSON_EXTRACT(`config`,'$.fieldModels'), JSON_OBJECT('valueMapping', @valueMapping)) 是否已找到 FROM `sql_model`; -- 最后匹配結果 SELECT id, config FROM `sql_model` WHERE JSON_CONTAINS(JSON_EXTRACT(`config`,'$.fieldModels'), JSON_OBJECT('valueMapping', @valueMapping)) > 0;