在mysql中处理json字段我还是个新手。我遇到的所有解决方案都处理具有键/值的对象;找不到处理json数组的对象。
无论如何,我想做的是能够选择其中包含interestIds的所有行。我该怎么做?谢谢。
用户表

+----+-------------+
| id | interestIds |
+----+-------------+
|  1 | [1, 2]      |
|  2 | [3, 2]      |
|  3 | [2, 4]      |
+----+-------------+

示例测试查询:
SET @userId = 2;
SELECT * FROM Users
WHERE @userId IN JSON_CONTAINS(@user, interestIds, '$[1]');

我对如何使用2函数感到困惑;不知道应该为第三个参数放置什么…

最佳答案

您可以使用以下解决方案,使用JSON_CONTAINS

SELECT *
FROM Users
WHERE JSON_CONTAINS(interestIds, '2') = 1;

第三个(可选)参数path使您能够仅在JSON值的特定部分使用此函数。因此,下面的示例检查2是否是数组的第二个值:
SELECT *
FROM test
WHERE JSON_CONTAINS(interestIds, '2', '$[1]') = 1;

demo on dbfiddle.uk

09-11 20:40