如何使用MySQL或R获取JSON是否包含特定文本
我在MySQL中有一个下面提到的表(版本=如何使用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
5.7.25
):
表1
示例Json格式可用:
上表包含ID
列,其中每个ID都是唯一的,Data
列包含JSON字符串,根据每个ID,我想知道存储在Data
列中的JSON字符串是否包含值“Accepted”。如果针对任何特定ID,JSON在JSON字符串中包含值“Accepted”,则将其显示为True,否则为False
注:
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