MySQL如何将JSON列与数组进行比较

5

我正在处理一个PHP PDO查询,我想检查一个JSON列是否与一个PHP数组有交集。

$classes = [1,2,3,4,5,6,7];
|---------------------|------------------|
|      students       |       classes    |
|---------------------|------------------|
|          12         |      [1,3,6]     |
|---------------------|------------------|
|          13         |     [2,9,10]     |
|---------------------|------------------|
|          14         |     [9,8,10]     |
|---------------------|------------------|

例如,在上述示例中,我需要获取所有至少存在一个班级的学生在$classes = [1,2,3,4,5,6,7];数组中,因此在这种情况下结果应该是:

|---------------------|------------------|
|      students       |       classes    |
|---------------------|------------------|
|          12         |      [1,3,6]     |
|---------------------|------------------|
|          13         |      [2,9,10]    |
|---------------------|------------------|

我试图将数组转换为字符串,然后使用"%like%"进行比较,但是由于'x,y,z'不在'a,b,x,c'中,所以它无法工作。

所以我想知道是否可以比较在MySQL中存储为json的两个数组和一个PHP数组。我需要在查询内部完成。

谢谢


是的,两个数组存储在MySQL中作为JSON格式,另一个是PHP数组。我需要在查询内部完成这个操作。 - haffane hatim
@executable 我不需要比较只有两个PHP数组,可以查看我的评论,我编辑了问题以进行更详细的说明,无论如何感谢。 - haffane hatim
你是不是想说 $json_column = "['x','y','z']"; - revo
2
从数据库获取JSON,将其反序列化为PHP数组,然后比较数据。你为什么认为你需要在查询中做这件事呢?那样的话,你只会比较两个字符串,这对于匹配字符串内的实际数据项没有任何帮助。 - ADyson
@ADyson,请检查我的更新。 - haffane hatim
显示剩余5条评论
1个回答

0
你试过使用JSON_EXTRACT了吗?(链接:link)
这个函数应该让你可以把它当做一个数组来处理。 DigitalOcean HowTo (我并不与他们有任何关联).

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接