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;