mysql 查詢json數組(一)


-- 要查找的值
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;

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM