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 2
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 |