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;
下面是我数据库中的 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;