1

下面是我的数据库中的 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并寻找一种语法,它可以在通配符的帮助下选择节点。

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

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

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

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

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

4

1 回答 1

2

表格中的路径$.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;
于 2020-12-24T07:18:09.817 回答