mysql - 选择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"
}
]
解决方案
您可以使用以下解决方案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;
推荐阅读
- java - 将二进制转换为十六进制和十六进制转换为二进制
- node.js - 将网站部署到 Heroku 时出现应用程序错误
- node.js - 我们可以在 express 上添加 filter 由 pinoLogger 生成的 req 对象吗?就像它在使用 ddStream 登录到文件之前在 req 对象中显示 cookie
- docker - Travis CI - docker 镜像未推送到 dockerhub
- java - spring boot 无法在 mysql 中创建表
- c# - Powershell Net.WebRequest Timeout 不起作用
- docker - 支持在 docker 容器内运行 wireguard 的网络配置
- ios - 在发布版本中禁用 iOS OSLog
- vapor - Leaf 找不到我的模板 - Xcode 12 Vapor 4
- javascript - 反应钩子没有在点击时更新