【问题标题】:Mysql compare json column with arrayMysql比较json列和数组
【发布时间】:2019-05-18 17:18:01
【问题描述】:

我正在处理 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 数组。我需要在查询中这样做。

谢谢

【问题讨论】:

  • 所以你想比较两个数组?
  • 是的,两个数组以 json 格式存储在 MySQL 中,另一个是 PHP 数组。我需要在查询中这样做
  • 你能展示一些示例数据和代码吗?也是预期的输出
  • @executable 我不需要比较两个 php 数组,检查我的评论我编辑了问题以解释更多,谢谢
  • 从数据库中获取 JSON,反序列化为 PHP 数组,然后比较数据。为什么你认为你“需要”在查询中准确地做到这一点?你要做的就是比较两个字符串,这并不能帮助你匹配字符串中的实际数据项。

标签: php mysql sql pdo phpmyadmin


【解决方案1】:

您是否尝试过使用JSON_EXTRACT (link)?

它应该让你把它当作一个数组来对待。

DigitalOcean HowTo(反正我不隶属于他们)。

【讨论】:

    猜你喜欢
    • 2019-07-29
    • 2019-07-12
    • 2013-04-29
    • 2013-05-16
    • 1970-01-01
    • 2012-12-26
    • 1970-01-01
    • 1970-01-01
    • 2018-05-15
    相关资源
    最近更新 更多