gpt4 book ai didi

MySQL JSON - 使用 IN 语句 | json_contains

转载 作者:行者123 更新时间:2023-11-29 01:50:48 25 4
gpt4 key购买 nike

我正在尝试选择 json 列中的 roles 属性包含任何值的所有列。

我试过的语句:

SELECT * FROM components WHERE json->'$.roles' IN(1)

  • 这甚至行不通,但在我看来应该...

SELECT * FROM components WHERE JSON_CONTAINS(components, '1', '$.roles')

  • 这确实有效,但是很严格,所以当我使用 1 时,它会像应该的那样拉动两者,因为它们都包含 1,但是如果我插入 1,2JSON_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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com