我正在尝试查询 MyTable 中以下为 varchar 的 JSON Blob,但是,JSONBlob2 在大括号上有方括号,这似乎干扰了我的查询:
我的桌子
JSONBlob | JSONBlob2 |
---|---|
{“a”:“12345”,“b”:{“c”:“567”,“d”:“llc”} } | {"e": [{"f":"321", "g":"432}] "h": [{"i":"沙发", "j":"沙发"}] } |
{“a”:“6789”,“b”:{“c”:“999”,“d”:“col”} } | {"e": [{"f":"765", "g":"444}] "h": [{"i":"床", "j":"毯子"}] } |
到目前为止我所尝试的方法没有返回 JSONBlob2 的结果:
select jb:e:f::text f, jb:h:i::text h
from (select PARSE_JSON(JSONBlob2) jb
from myTable)
希望得到这种格式的结果:
f | 我 |
---|---|
321 | 沙发 |
765 | 床 |
jsonblob2
中的JSON无效,假设无效来自您输入“假数据”以保护您的真实数据,那么我们可以通过数组索引访问它:
with data(JSONBlob2) as (
select * from values
( '{"e": [{"f":"321", "g":"432"}], "h": [{"i":"couch", "j":"sofa"}] }'),
( '{"e": [{"f":"765", "g":"444"}], "h": [{"i":"bed", "j":"blanket"}] }')
)
select
try_parse_json(JSONBlob2):e[0]:f::text as f
,try_parse_json(JSONBlob2):h[0].i::text as i
from data
我很懒,没有像 demircioglu 那样使用嵌套的 try_parse_json 。