首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用MySQL或R获取JSON包含特定文本的信息

如何使用MySQL或R获取JSON包含特定文本的信息
EN

Stack Overflow用户
提问于 2020-01-01 10:07:54
回答 1查看 120关注 0票数 0

我在MySQL (Version =5.7.25)中有一个下面提到的表:

Tab1

代码语言:javascript
复制
ID               Data
YT-1             {JSON}
YT-2             {JSON}
YT-3             {JSON}

示例Json格式可用:https://codebeautify.org/online-json-editor/cb57a5ce

上面的表包含ID列,其中每个ID都是唯一的,Data列包含JSON字符串,对于每个ID,我想知道存储在Data列中的JSON字符串是否包含“接受”值。如果对任何特定的ID,JSON包含json字符串中的值“Accepted”,则将其显示为True,否则为False。

注意:

在JSON中,

  1. 表示Status段可能有n个resp值,
  2. 用于finalStatus段可以用于某些it,或者不能用于finalStatus段的
  3. ,可以有一个可能的值,例如Not Accepted,在标志列H 218G 219中应该被认为是D17。

此外,在finalStatus段中可能有多个子段,如下所示:

代码语言:javascript
复制
{
      "report": "submitted",
      "order": "yearly",
      "special status" : "Accepted",
      "price": "4,451"
    },
{
      "report": "prepared",
      "order": "yearly",
      "special status" : "Not Accepted",
      "price": "4,451"
    },
{
      "report": "yet to start",
      "order": "yearly",
      "price": "4,451"
    }

所需输出

代码语言:javascript
复制
ID               Data      Flag
YT-1             {JSON}    True
YT-2             {JSON}    False  
YT-3             {JSON}    check it
EN

回答 1

Stack Overflow用户

发布于 2020-01-01 10:23:23

JSON的结构不适合搜索。不过,您可以使用JSON_SEARCH函数,它允许您在指定的位置搜索特定的字符串:

代码语言:javascript
复制
SELECT id,
       CASE WHEN JSON_SEARCH(data, 'one', 'Not Accepted', NULL, '$.finalStatus[*]."special status"') IS NOT NULL THEN 'check it'
            WHEN JSON_SEARCH(data, 'one', 'Accepted', NULL, '$.Status', '$.Status1', '$.Status2') IS NOT NULL THEN 'True'
            ELSE 'False'
       END AS flag
FROM t

上面的内容将在finalStatus数组中搜索包含值Not Accepted的键special status。然后,它将在StatusStatus1Status2中搜索包含值Accepted的键。根据你的需要修改道路。

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

https://stackoverflow.com/questions/59551567

复制
相关文章

相似问题

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