在JSON数组中选择符合mysql中条件的所有对象

时间:2019-03-07 08:47:11

标签: mysql json

当mysql中json字段中的数据满足某些条件时,我需要捕获行。我将执行什么选择以使返回的行返回到数组中任何对象中json列的Status值为1000的地方?

我尝试使用类似这样的东西:

SELECT * FROM table WHERE Task_JSON->"$[0]" = 1000;

我正在使用服务器版本:mysql 5.7.11

[
{
 "Sequence":"1" ,
 "Status":"1000" 
},
{
 "Sequence":"2" ,
 "Status":"1000" 
},
{
 "Sequence":"3" ,
 "Status":"3000"
}
]

3 个答案:

答案 0 :(得分:1)

您可以使用JSON_CONTAINS使用以下解决方案:

SELECT *
FROM table_name
WHERE JSON_CONTAINS(Task_JSON, '{"Status":"1000"}') > 0;

使用JSON_SEARCH的另一种解决方案:

SELECT * 
FROM table_name
WHERE JSON_SEARCH(Task_JSON, 'one', '1000', NULL, '$[*]."Status"') IS NOT NULL;
  

演示: https://www.db-fiddle.com/f/3JTQreVi63FS7HbmWQ9TEM/4

答案 1 :(得分:0)

SELECT * FROM table WHERE Task_JSON ->>'Status' = 1000; 

答案 2 :(得分:0)

JSON_EXTRACT可以为您提供帮助。

https://dev.mysql.com/doc/refman/8.0/en/json-search-functions.html

select * from table  where JSON_EXTRACT(Task_JSON, '$.Status') = 1000 ;