gpt4 book ai didi

mysql - 在mysql中通过key在json中查找

转载 作者:行者123 更新时间:2023-11-29 17:56:03 26 4
gpt4 key购买 nike

我有一个 json,我想提取一个键的值。我知道 key 名称,但不知道位置。我的 json 很复杂,在 mysql 中看起来像这样:

set @jsonstr:='
{
"glossary": {
"title": "example glossary",
"GlossDiv": {
"title": "S",
"GlossList": {
"GlossEntry": {
"ID": "SGML",
"SortAs": "SGML",
"GlossTerm": "Standard Generalized Markup Language",
"Acronym": "SGML",
"Abbrev": "ISO 8879:1986",
"GlossDef": {
"para": "A meta-markup language, used to create markup languages such as DocBook.",
"GlossSeeAlso": ["GML", "XML"]
},
"GlossSee": "markup"
}
}
}
}
}
';

例如,我想搜索关键字“Acronym”。我想要完整路径/或直接它的值 [“SGML”],以便我可以进一步处理它。

我正在执行以下操作,它返回 null

select JSON_Search(@jsonstr,'all', '%Acronym%')

我的要求:

  • 我的 json 中可能有多个“缩写词”,我只想要所有这些。
  • 我没有值(value)部分,我只知道关键
  • 我的 json 很复杂,包含嵌套对象和数组

<小时/> 编辑

它有效,所以我现在尝试使用更新后的 json,它看起来像

    set @jsonstr:='
{
"glossary": {
"title": "example glossary",
"GlossDiv": {
"title": "S",
"GlossList": {
"GlossEntry": {
"ID": "SGML",
"SortAs": "SGML",
"GlossTerm": "Standard Generalized Markup Language",
"Acronym": "SGML",
"Abbrev": "ISO 8879:1986",
"GlossDef": {
"para": "A meta-markup language, used to create markup languages such as DocBook.",
"GlossSeeAlso": ["GML", "XML"],
"Acronym" : "another value"
},
"GlossSee": "markup"
}
}
}
}
}
';

现在查询

select JSON_EXTRACT(@jsonstr,'$**.Acronym')

已返回

[“SGML”,“另一个值”]

但是这样我将无法获取具有我的目标 key 的各个位置的路径。

问题:如果我能得到一个表格,其中“关键位置”作为第一列,它们各自的值在第二列中。

最佳答案

我认为您想要这个查询:

SELECT JSON_EXTRACT(@jsonstr,'$**.Acronym')

JSON_Search 查找 JSON 对象中的值。您知道要查找的 key 的名称,因此您所需要做的就是使用路径,这在 https://dev.mysql.com/doc/refman/5.7/en/json-path-syntax.html 中有解释。示例位于 https://dev.mysql.com/doc/refman/5.7/en/json-search-functions.html#function_json-search

关于mysql - 在mysql中通过key在json中查找,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48830615/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com