我正在尝试选择列中的roles
属性json
包含任何值的所有列。
我试过的陈述:
SELECT * FROM components WHERE json->'$.roles' IN(1)
- 这甚至不起作用,但在我看来它应该......
SELECT * FROM components WHERE JSON_CONTAINS(components, '1', '$.roles')
- 这确实有效,但是很严格,所以当我使用
1
它时会像它应该的那样拉,因为它们都包含 1,但是如果我插入1,2
或者JSON_ARRAY(1,2)
它只会拉后面的行,因为它没有检查每个数组元素......
我有以下表components
结构和数据:
+====+========================================================================================================================================================================================================+==+
| id | json | |
+====+========================================================================================================================================================================================================+==+
| 1 | {"area": 1, "roles": [1], "elements": [{"home": {"content": "Home", "attributes": {"class": "my_class_1"}}}, {"dashboard": {"content": "Dashboard", "attributes": {"class": "my_class_1"}}}]} | |
+----+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--+
| 2 | {"area": 1, "roles": [1, 2, 5], "elements": [{"home": {"content": "Testing", "attributes": {"class": "my_class_1"}}}, {"dashboard": {"content": "Dashboard", "attributes": {"class": "my_class_1"}}}]} | |
+----+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--+
问题:如何修改这些语句中的任何一个以允许它们根据roles
属性中的值查询行?