当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"
}
]
答案 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;
答案 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 ;