首页 > 解决方案 > 选择json数组中满足mysql条件的所有对象

问题描述

当 mysql 中的 json 字段中的数据满足某些条件时,我需要捕获行。我将运行什么选择来返回数组中任何对象中 json 列的状态值为 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"
}
]

标签: mysqljson

解决方案


您可以使用以下解决方案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


推荐阅读