作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试选择 json
列中的 roles
属性包含任何值的所有列。
我试过的语句:
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)
它只会提取后面的行,因为它不检查每个数组元素... 我有下表组件
结构和数据:
+====+========================================================================================================================================================================================================+==+
| 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
属性中的值查询行?
最佳答案
表达式
value in (x, y, z, ...)
相当于
value = x OR value = y OR value = z OR ...
这不适用于像 json->'$.roles'
这样的数组,因为数组不等于它的元素,你需要调用 JSON_CONTAINS()
进行测试。
对于您想要的,您需要为每个要测试的值调用 JSON_CONTAINS()
。
WHERE JSON_CONTAINS(components, '1', '$.roles') OR JSON_CONTAINS(components, '2', '$.roles')
关于MySQL JSON - 使用 IN 语句 | json_contains,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44294213/
我是一名优秀的程序员,十分优秀!