mysql - mariadb json对象数组过滤属性条件
问题描述
表test_js
结构:
`id` int(11) unsigned NOT NULL AUTO_INCREMENT
`json` JSON
数据:
`id` `json`
`1` `[{"id": 1, "size": 1, "ver": 0},{"id": 2, "size": 3, "ver": 1},{"id": 1, "size": 3, "ver": 2}]`
`2` `[{"id": 1, "size": 3, "ver": 0}]`
`3` `[{"id": 1, "size": 2, "ver": 3}]`
我需要根据条件返回过滤的对象数组 {"id": 1, "size": 3}
我尝试 JSON_CONTAINS:
select `json`
from `test_js`
WHERE JSON_CONTAINS(`json`, JSON_OBJECT("id", 1, "size", 3), '$');
我得到:
[{"id": 1, "size": 1, "ver": 0}, {"id": 2, "size": 3, "ver": 1}, {"id": 1, "size": 3, "ver": 2}]
[{"id": 1, "size": 3, "ver": 0}]
但我需要喜欢:
[{"id": 1, "size": 3, "ver": 2}]
[{"id": 1, "size": 3, "ver": 0}]
是否有 JSON 函数的任何组合来获得所需的结果?
当前版本 - MariaDB 10.3.12
解决方案
推荐阅读
- html - How to increase the size of the drop down based on the length of the options available?
- orm - How can I use WHERE on a ManagedSet?
- node.js - Change desktop app icons on mac, programatically. 2019
- angular - Angular Deployment assets path
- php - 基于用户代理将用户重定向到wordpress类别
- sql - Hibernate @Formula recursive query with matching table
- java - 如何将String格式的xml解析为数组?
- php - 如何将 utf-8 字符串解码为实际文本?
- java - CORS 策略:对预检请求的响应未通过访问控制检查:它没有 HTTP ok 状态
- java - 从 pairDevice() 获取响应