
t1 表中有一字段 items 为 json 类型,存储的内容格式为:
[ {"id":1,"name":"a"}, {"id":2,"name":"b"} ] 我想查询是否包含 id 为 1 的表记录的数量,官方的 JSON_CONTAINS 函数好像是对于 json object 的,查询了一下对于 json array 并未查出正确结果。
SELECT COUNT(*) FROM t1 WHERE JSON_CONTAINS(items, 1,'$.id') 请问如何实现?
1 cs8814336 2019-02-18 14:38:08 +08:00 select `remarks` from `addrinfo` +------------------------------------------+ | remarks | +------------------------------------------+ | {"test": [{"id": "123"}, {"id": "243"}]} | | {"test": [{"id": "123"}, {"id": "243"}]} | | {"test": [{"id": "99"}, {"id": "243"}]} | | {"test": [{"id": "123"}, {"id": "243"}]} | select `remarks`->'$.test[*].id' ,json_contains(`remarks`->'$.test[*].id','"123"') from `addrinfo`; 注意 json contains 里面 123 需要用双引号括住!!! |
2 feihuxiongdi OP @cs8814336 数据库里存的是 {"test": [{"id": 123}, {"id": 243}]} 不是 {"test": [{"id": __"__ 123 __"__ }, {"id": __"__ 243 __"__ }]} |
3 cs8814336 2019-02-26 08:59:38 +08:00 @feihuxiongdi 什么意思.你那个是 json 结构吗 _"_123_"_ ? |
4 feihuxiongdi OP |