【发布时间】:2019-08-02 09:25:03
【问题描述】:
我有一个 MySQL 数据库列,其中包含 JSON 数组编码的字符串。我想搜索“Elapsed”值大于特定数字的 JSON 数组,并返回找到该值的对象的相应 TaskID 值。我一直在尝试使用 JSON_SEARCH、JSON_CONTAINS 和 JSON_EXTRACT 函数的组合,但没有得到想要的结果。
[
{
"TaskID": "TAS00000012344",
"Elapsed": "25"
},
{
"TaskID": "TAS00000012345",
"Elapsed": "30"
},
{
"TaskID": "TAS00000012346",
"Elapsed": "35"
},
{
"TaskID": "TAS00000012347",
"Elapsed": "40"
}
]
参考上面的 JSON,如果我搜索“Elapsed”>“30”,那么将返回 2 条记录
'TAS00000012346''TAS00000012347'
我正在使用 MySQL 5.7.11 版,并且是查询 json 数据的新手。任何帮助,将不胜感激。谢谢
【问题讨论】:
-
你能展示一下你的表结构吗?如果我没记错的话,您必须将列定义为实际 JSON 类型,或者为了使用这些函数,您至少需要将 varchar 字段转换为 json 类型,请看这里:dev.mysql.com/doc/refman/5.7/en/json.html#json-paths
-
“我有一个 MySQL 数据库列,其中包含 JSON 数组编码的字符串” 为什么?
-
包含 JSON 数据的列只是一个“文本”数据类型。无论数据类型如何,JSON 函数都可以正常工作。可能没有他们应该/可能的那么好。
标签: mysql sql arrays json function