MySQL字段是JsonArray格式怎么查询数据

表名:dc_sync_field_conf

number sync_config
12345 [{"syncFlag": 2, "fieldName": "typeXXX", "fieldText": "类型"}]
67890 [{"syncFlag": 0, "fieldName": "typeXXX", "fieldText": "类型"}]

需要筛选出syncFlag = 0, fieldName = typeXXX 的 number 值

这个是错误示范,两个and的条件会作为Or,fieldName=typeXXX 或 syncFlag=0

SELECT number from dc_sync_field_conf
WHERE JSON_CONTAINS(sync_config, JSON_OBJECT('fieldName', "typeXXX"))
AND JSON_CONTAINS(sync_config, JSON_OBJECT('syncFlag', 0))
LIMIT 100;

这个是正确的

select number from dc_sync_field_conf 
where JSON_CONTAINS(sync_config, JSON_OBJECT('fieldName', "typeNames", "syncFlag", 1)) 

JSON_OBJECT(k,v,k,v,......)


需要筛选出fieldName = typeXXX 的 syncFlag 值

select sync_config->'$[*].syncFlag' dc_sync_field_conf
where JSON_CONTAINS(sync_config, JSON_OBJECT('fieldName', "typeNames"))
LIMIT 100;
posted @ 2021-12-29 15:42  InkYi  阅读(1909)  评论(0编辑  收藏  举报