如何使用MySQL或R获取JSON是否包含特定文本

如何使用MySQL或R获取JSON是否包含特定文本,mysql,r,json,dataframe,dplyr,Mysql,R,Json,Dataframe,Dplyr,我在MySQL中有一个下面提到的表(版本=5.7.25): 表1 示例Json格式可用: 上表包含ID列,其中每个ID都是唯一的,Data列包含JSON字符串,根据每个ID,我想知道存储在Data列中的JSON字符串是否包含值“Accepted”。如果针对任何特定ID,JSON在JSON字符串中包含值“Accepted”,则将其显示为True,否则为False 注: 对于JSON中的Status段,可能有n个resp值 对于finalStatus段,可能有specialstatus可用于某些ID

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

表1

示例Json格式可用:

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

注:

  • 对于JSON中的
    Status
    段,可能有n个resp值
  • 对于
    finalStatus
    段,可能有
    specialstatus
    可用于某些ID,也可能不可用
  • 对于
    finalStatus
    段,可能存在一个可能的值,例如
    未接受
    ,该值应被视为
    在标志列中检查它
  • 此外,在
    finalStatus
    段中可能有多个子段,如下所示:

    {
          "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"
        }
    
    所需输出

    ID               Data      Flag
    YT-1             {JSON}    True
    YT-2             {JSON}    False  
    YT-3             {JSON}    check it
    

    JSON的结构不适合搜索。尽管如此,您仍然可以使用允许您在指定位置搜索特定字符串的函数:

    选择id,
    当JSON_搜索(数据'one','Not Accepted',NULL,'$.finalStatus[*].“special status”')不为NULL时,则为'check it'
    当JSON_搜索(数据'one','Accepted',NULL,'$.Status','$.Status1','$.Status2')不为NULL时,则为'True'
    否则为“假”
    以旗帜结束
    从t
    

    上面将在
    finalStatus
    数组中搜索包含值
    未接受的键
    特殊状态
    。然后,它将搜索
    Status
    Status1
    Status2
    以查找包含值
    Accepted
    的键。根据您的需要修改路径。

    发布JSON示例并标记MySQL版本。@stud3nt:Getting syntax error.如果数据包含
    未被接受怎么办
    ?Agree@SalmanA,必须根据JSON进行修改。ID来自何处?这就是问题所在,值“Accepted”可以到达3个不同的路径…我想标记为true,即使是1、2或3次。在
    中添加3个
    条件,当
    时。您可以使用
    案例测试三个条件。如果您发布一个JSON示例,那将是最好的。@SalmanA:我已经用示例JSON文件更新了这个问题。请参阅修订后的答案。
    
    ID               Data      Flag
    YT-1             {JSON}    True
    YT-2             {JSON}    False  
    YT-3             {JSON}    check it