繁体   English   中英

Mysql Json 提取 - 密钥的通配符选择

[英]Mysql Json Extract - wild card selection of key

下面是我数据库中的 json blob

{
  RootData: {
    202003: {
      201903: {
        "abc": 123,
        xyz: 456
      },
      data1: {
        
      },
      data2: {
        
      }
    }
  }
}

现在我有一个查询在哪里提取节点201903内的数据,如下所示

select blah blah,
 JSON_EXTRACT(convert(columnname using utf8), '$.RootData."202003"."201903".abc') as blah

在上面的查询中,我的问题围绕着'$.RootData."202003"."201903".abc'部分

我不想硬编码部分201903并在通配符的帮助下寻找可以 select 节点的语法。

我尝试了以下选项但没有运气

'$.RootData."202003"."20*".abc'

'$.RootData."202003".[1].abc'

'$.RootData."202003".$.20*.abc'

不起作用,因为我猜它的语法不正确。 寻找正确的语法。 20 总是那个键的开始,我们可以依赖它。 它始终是第一把钥匙。

$.RootData."202003"**.abc形式的路径应该会有所帮助。

参考 - https://www.db-fiddle.com/f/6g4qiekAU4i3J8iRoAZiCA/0

结果类型将是数组。 要获取第一个匹配结果,可以将结果嵌套在另一个JSON_EXTRACT中,如下所示

select JSON_EXTRACT(JSON_EXTRACT(convert(data using utf8), '$.RootData."202003"**.abc'), '$[0]')
from rootdata;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM