首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL查询: JSON列差异

SQL查询: JSON列差异
EN

Stack Overflow用户
提问于 2020-08-20 17:37:04
回答 1查看 24关注 0票数 0

我需要你的点子来解决这个奇怪的问题。

表结构:id (increment), meta (JSON).

Meta看起来像这样:

代码语言:javascript
复制
{
  "response": [
    {
      "name": "x",
      "file_id": 957353,
      "user_id": 11111,
      "lastname": "x",
      "born_date": "1915-10-29",
      "file_path": "xxxx/xx/xx/xxxxxxxxx",
      "valid_date": "2099-01-01",
      "document_id": 33333,
      "document_type": "xxx_x_x_x",
    }
  ],
  "evaluation": [
    {
      "name": "a",
      "file_id": 957353,
      "user_id": 11111,
      "lastname": "b",
      "born_date": "1915-10-29",
      "file_path": "xxxx/xx/xx/xxxxxxxxx",
      "valid_date": "2099-01-01",
      "document_id": 33333,
      "document_type": "xxx_x_x_x",
    }
  ]
} 

我必须将回应与评估进行比较。我需要一些东西,比如diff或数据是否相同的信息。它必须是SQL查询。

我正在寻找这样的结果:

代码语言:javascript
复制
id | identical | diff ?
 1 |    1      | null
 2 |    0      | 'xxxx => xxx'
 3 |    1      | null

这是完全可能的吗?

EN

回答 1

Stack Overflow用户

发布于 2020-08-20 18:03:08

您可以使用MySQL JSON_CONTAINS函数(5.7及更高版本)比较两者,但它将只返回response是否包含evaluation的结构,反之亦然。这意味着您必须以两种方式执行JSON_CONTAINS,以查看它们是否100%相等。

关于diff:这在内置函数中是不可能的。可以使用存储过程遍历这两个对象,确定元素是否存在、不同或缺失,并以不同的格式输出。在Stackoverflow上有一个类似的尝试:https://codereview.stackexchange.com/questions/213951/mysql-json-diff-procedure

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63502305

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档